我想在键盘正在使用时更改它的UITextInputTraits ....
我的理想代码看起来像这样:
- (IBAction)nameTextDidChange:(UITextField *)sender {
if ([sender.text isEqualToString:@""]) {
sender.returnKeyType = UIReturnKeyDone;
} else {
sender.returnKeyType = UIReturnKeySearch;
}
}
所以......我为一个空字符串设置了一个不同的'Return'按钮,因为我做了一个包含一些文本的字符串。我上面发布的代码不起作用,键盘保留了它的原始文本输入特性。
任何人的想法,或者这是否永远不会起作用,无论我怎么努力?
干杯!
尼克。
感谢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;
}
答案 0 :(得分:5)
您可以通过在方法末尾添加以下行来完成此工作。
if ([textField.text isEqualToString:@""]) {
textField.returnKeyType = UIReturnKeyDone;
[textField resignFirstResponder];
[textField becomeFirstResponder];
} else if (textField.returnKeyType == UIReturnKeyDone) {
textField.returnKeyType = UIReturnKeySearch;
[textField resignFirstResponder];
[textField becomeFirstResponder];
}
这应该有效。
您基本上可以打开和关闭它,以便文本输入发生变化。第二个是确保只在需要时翻转。
答案 1 :(得分:4)
[textField reloadInputViews]
似乎可以解决这个问题......
答案 2 :(得分:0)
resignFirstResponder / becomeFirstResponder& reloadInputViews有一些警告。请参阅stackoverflow.com/questions/5958427 / ....这些将键盘更改回其初始状态。因此,如果用户切换到其他键盘布局(数字,标点符号等)之一,则该状态将丢失。我从来没有找到一个好的解决方案。