【问题标题】:Is it possible to change UITextInputTraits while a UIKeyboard is in view?是否可以在查看 UIKeyboard 时更改 UITextInputTraits?
【发布时间】:2011-01-10 12:07:37
【问题描述】:

我想在使用时更改键盘的 UITextInputTraits....

我的理想代码如下所示:

- (IBAction)nameTextDidChange:(UITextField *)sender {
    if ([sender.text isEqualToString:@""]) {
        sender.returnKeyType = UIReturnKeyDone;
    } else {
        sender.returnKeyType = UIReturnKeySearch;
    }
}

所以...我对一个空字符串有一个不同的“返回”按钮,因为我在其中输入了一些文本。我在上面发布的代码不起作用,键盘保留了它的原始文本输入特征。

任何想法,或者无论我多么努力,这永远不会奏效?

干杯!

尼克。

感谢 Deepak,这是我实际使用的代码:

if ([sender.text isEqualToString:@""]) {
    sender.returnKeyType = UIReturnKeyDone;

    [sender resignFirstResponder];
    [sender becomeFirstResponder];
} else if (sender.returnKeyType == UIReturnKeyDone) {

    NSString *cachedLetter = sender.text;

    sender.returnKeyType = UIReturnKeySearch;

    [sender resignFirstResponder];
    [sender becomeFirstResponder];

    sender.text = cachedLetter;
}

【问题讨论】:

    标签: iphone keyboard textinput


    【解决方案1】:

    您可以通过在方法末尾添加以下行来完成这项工作。

    if ([textField.text isEqualToString:@""]) {
        textField.returnKeyType = UIReturnKeyDone;
    
        [textField resignFirstResponder];
        [textField becomeFirstResponder];
    } else if (textField.returnKeyType == UIReturnKeyDone) {
        textField.returnKeyType = UIReturnKeySearch;
    
        [textField resignFirstResponder];
        [textField becomeFirstResponder];
    }
    

    这应该可行。

    您基本上将其打开和关闭,以便文本输入发生变化。第二个 if 是确保仅在需要时才翻转。

    【讨论】:

    • 天才,非常感谢。它工作得几乎完美..唯一不起作用的是当你放弃键盘时,你失去了 UITextField 中的文本 - 所以我只需要缓存它!我会将我在问题中使用的确切代码发布给其他人。
    【解决方案2】:

    [textField reloadInputViews] 似乎可以解决问题...

    【讨论】:

      【解决方案3】:

      resignFirstResponder/becomeFirstResponder & reloadInputViews 有一些注意事项。请参阅 stackoverflow.com/questions/5958427/…。这些将键盘更改回其初始状态。因此,如果用户切换到其他键盘布局(数字、标点符号等),该状态将丢失。我从来没有找到好的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-29
        • 2019-09-26
        • 2011-08-09
        • 2010-12-18
        • 2012-03-16
        • 1970-01-01
        • 1970-01-01
        • 2014-07-14
        相关资源
        最近更新 更多