resignFirstResponder 不关闭 UITextField 的 ASCII 键盘

Posted

技术标签:

【中文标题】resignFirstResponder 不关闭 UITextField 的 ASCII 键盘【英文标题】:resignFirstResponder not dismissing ASCII keyboard for UITextField 【发布时间】:2009-09-24 14:26:15 【问题描述】:

我有一个带有 4 个 UITextFields 的 UIViewController,其中 3 个使用 NumberPad,1 个使用 ASCII 键盘。当用户触摸文本字段外的背景按钮时,我无法关闭 ASCII 键盘。背景按钮可以很好地关闭数字键盘,但不会关闭 ASCII 键盘。

是的,ASCII 键盘确实有一个“完成”按钮并且可以工作(我在 IB 中设置了委托并实现了 textFieldShouldReturn)但我希望所有字段都能够通过触摸背景区域来关闭,以便它们的行为一致(尽可能)。

调用了背景按钮的操作方法(如下),它确实为我的所有文本字段对象调用了 resignFirstResponder,但使用 ASCII 键盘调用文本字段不会关闭键盘,而对数字文本字段的其他调用会关闭他们的数字键盘。

-(IBAction)backgroundClick:(id)sender

    // resignFirstResponder makes the keyboard go away when the 
    // user clicks outside of one of the text fields
    [textField resignFirstResponder];
    [num1Field resignFirstResponder];  
    [num2Field resignFirstResponder];
    [num3Field resignFirstResponder];
    [num4Field resignFirstResponder];

我在这里缺少什么?

【问题讨论】:

我在上面函数的开头又加了一行:BOOL isIt = [textField isFirstResponder];当键盘处于活动状态时,我在后台区域触摸并在此调用后立即有一个断点,isIt 是 NO。我不知道为什么,但我想这就是辞职不起作用的原因。 【参考方案1】:

发现问题。文本字段的引用出口未连接到 IB 中的文件所有者。

我以为我已经检查了连接,但显然错过了这一点。

【讨论】:

以上是关于resignFirstResponder 不关闭 UITextField 的 ASCII 键盘的主要内容,如果未能解决你的问题,请参考以下文章

resignFirstResponder 无法关闭我在 iPad 上的自定义键盘。为啥?

为啥必须在主队列上异步调用 resignFirstResponder() 来关闭键盘

即使运行代码,resignFirstResponder 也不会关闭键盘

UITextField - resignFirstResponder 查询

带有 Monotouch 的 UITextField ResignFirstResponder 示例

带有文本字段的 resignFirstResponder 不起作用