是否可以在查看 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

可观察的集合没有在 UI 更改时更新

Material-ui AppBar。滚动时更改颜色。反应

iOS iPhone - 在keyboardWillShow之前获取UIKeyboard高度

UIKeyboard 在 iOS7 中不会自动半透明