becomeFirstResponder第二次不显示键盘(ios 6 + storyboard)

时间:2012-10-07 12:31:11

标签: iphone objective-c ios xcode storyboard

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

基本上,它的工作原理如下:

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

当用户从视图1移动到视图2时,键盘和所有内容都能正常工作。但是,当从视图3移动到视图2,或从视图3移动并重新开始时,键盘会不显示。

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

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

1 个答案:

答案 0 :(得分:7)

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

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

我想我能给出的主要建议(至少最终对我有用),只是通过所有的becomeFirstResponder并确保在移动到下一个屏幕之前发布它。