becomeFirstResponder 第二次不显示键盘(ios 6 + 故事板)

Posted

技术标签:

【中文标题】becomeFirstResponder 第二次不显示键盘(ios 6 + 故事板)【英文标题】:becomeFirstResponder does not show keyboard second time (ios 6 + storyboard) 【发布时间】:2012-10-07 12:31:10 【问题描述】:

我有一个故事板,其中包括视图之间的导航。来回切换,还可以一直跳到主屏幕。

基本上,它是这样工作的:

视图 1 显示了一个简单的菜单。 视图 2 显示输入字段并自动显示键盘。 视图 3 显示了一个结果表。在此视图中,您可以后退一步(视图 2)或返回主屏幕(视图 1)。

当用户从视图 1 移动到视图 2 时,键盘和所有东西第一次都能完美运行。但是,当从视图 3 移回视图 2,或从视图 3 重新开始时,键盘会不显示。

在代码中,我在viewDidAppear方法中变成了FirstResponder。此外,它会在加载视图 3 时 resignFirstResponder。另一个有趣的事实是,当第二次调用 becomeFirstResponder 时,它确实返回 NO(而第一次返回 YES)。此外,当返回此视图时,无法选择文本字段,即使它们是 userInteractionEnabled。

我真的被困在这里,所以非常感谢任何帮助。 我已经看到了几个与此类似的问题,但没有找到解决方案:

becomeFirstResponder seems to work only 1st time for shake gesture Adding [myUITextField becomeFirstResponder]; does not bring up keyboard keyboard not responding to resignFirstResponder UITextField becomeFirstResponder works only once

【问题讨论】:

有没有人幸运地解决了这个问题?我已经查看了所有内容并尝试了很多东西,但没有任何效果..每个 uitextfield 键盘只会显示 1 次 【参考方案1】:

我能够在我的代码中找到问题所在。自己回答这个问题,因为它可能对其他人也有帮助。

我的问题是我并没有真正得到正确的事件顺序。我有一个可以移动到下一个文本字段的按钮,如果一切都完成了,它将移动到下一个屏幕。这会导致在切换到新屏幕时调用 becomeFirstResponder 方法而不释放 (resignFirstResponder)。

我想我能给出的主要建议(至少最终对我有用)就是检查所有 becomeFirstResponder 并确保在移动到下一个屏幕之前释放它。

【讨论】:

以上是关于becomeFirstResponder 第二次不显示键盘(ios 6 + 故事板)的主要内容,如果未能解决你的问题,请参考以下文章

为啥F10第二次不工作?

为啥第二次不打开引导模式对话框?

表单中的第二个输入框第二次不起作用

我的 CustomDeserializer 类在同一类的第二个字段上第二次不起作用

通过 AJAX 更新 wordpress 表单第二次不起作用

Laravel csrf 令牌在 ajax 上第二次不匹配