6

我想在使用时更改键盘的 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;
}
4

3 回答 3

5

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

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

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

    [textField resignFirstResponder];
    [textField becomeFirstResponder];
}

这应该有效。

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

于 2010-01-28T17:35:53.320 回答
4

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

于 2012-06-01T07:03:24.143 回答
0

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

于 2013-02-17T19:00:59.543 回答