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

Posted

技术标签:

【中文标题】即使运行代码,resignFirstResponder 也不会关闭键盘【英文标题】:resignFirstResponder does not dismiss keyboard even though code is ran 【发布时间】:2014-03-04 01:31:39 【问题描述】:

这行代码是在我的邮件 textField editingDidEnd 时运行的。 NSLog 运行,所以我知道该功能已运行,但键盘仍然没有消失。我已将文本框连接为代表。我已经确保故事板中的连接在那里。它仍然不会改变。帮助。谢谢。

- (IBAction)emailDone2:(id)sender

    [_email resignFirstResponder];
    NSLog(@"emailDone2");

编辑 ** 我按照指示更改了代码,但仍然没有任何作用。什么都没有改变。

- (IBAction)emailDone2:(id)sender

    [self.view endEditing:TRUE];

【问题讨论】:

【参考方案1】:

问题是你认为谁是第一响应者和谁是第一响应者可能不一样。幸运的是,已经有一种方法可以解决这个问题。尝试使用

[topView endEditing:YES];

topView 是最顶层的视图。 endEditing 将遍历子视图,找到第一响应者,并告诉它辞职第一响应者。这比跟踪哪个子视图拥有它要简单得多。

在keyboard not responding to resignFirstResponder 中找到此问题,并在侧栏中链接到此问题。

【讨论】:

我不是 100% 了解 topView 是什么以及它应该在我的程序中的什么位置。我的 viewController 有文本框,当用户完成一个并在其他任何地方触摸屏幕时,我希望键盘消失。 尝试将其发送到您的主视图控制器;它应该为您找到有第一响应者的人,并告诉它把键盘送走。【参考方案2】:

textViewShouldEndEditing 的返回值应该为 true,resignFirstResponder 才会关闭

【讨论】:

以上是关于即使运行代码,resignFirstResponder 也不会关闭键盘的主要内容,如果未能解决你的问题,请参考以下文章

ResignFirstResponder 不工作。

ios resignFirstResponder 重置动画

iPhone 键盘、完成按钮和 resignFirstResponder

在覆盖 firstResponder 中调用 resignFirstResponder 不起作用

当我将 UITextField 与 resignFirstResponder 结合使用时,它不是最多 1 个数字

UITextView resignFirstResponder Crash on Back