即使运行代码,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 也不会关闭键盘的主要内容,如果未能解决你的问题,请参考以下文章
iPhone 键盘、完成按钮和 resignFirstResponder
在覆盖 firstResponder 中调用 resignFirstResponder 不起作用