是否可以在查看 UIKeyboard 时更改 UITextInputTraits?
Posted
技术标签:
【中文标题】是否可以在查看 UIKeyboard 时更改 UITextInputTraits?【英文标题】:Is it possible to change UITextInputTraits while a UIKeyboard is in view? 【发布时间】: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;
【问题讨论】:
【参考方案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 有一些注意事项。请参阅 ***.com/questions/5958427/…。这些将键盘更改回其初始状态。因此,如果用户切换到其他键盘布局(数字、标点符号等),该状态将丢失。我从来没有找到好的解决方案。
【讨论】:
以上是关于是否可以在查看 UIKeyboard 时更改 UITextInputTraits?的主要内容,如果未能解决你的问题,请参考以下文章
用户点击 UIKeyboard 中的完成按钮时未调用 textFieldShouldEndEditing
在不禁用用户交互的情况下阻止 UIWebView 输入显示 UIKeyboard