12

这应该很简单,但它变得令人头疼。我有一个 UITextField 视图,用户在其中输入一些文本并单击搜索。这会弹出另一个视图控制器,在第一个视图消失之前,我会在文本字段上辞去第一响应者的职务。当第二个视图被关闭时,第一个视图会自动使文本字段再次成为第一响应者,我找不到抑制这种情况的方法。有谁知道当我关闭第二个视图时如何防止键盘弹出?

我试图在 viewWillAppear 中辞职FirstResponder,没有效果。我在 viewDidAppear 中尝试了相同的方法,但是键盘弹出然后立即关闭,这看起来很尴尬。

我很感激任何帮助。

4

2 回答 2

9

我找到了一个修复,但它不是一个很好的。

发现 canBecomeResponder 消息在 afterviewWillAppear和 before被传递到文本字段viewDidAppear

所以我将一个 BOOL 值设置viewDidAppear为 YES,并在textField:shouldBeginEditing方法中使用该值。基本上,如果viewDidAppear尚未调用,textField:shouldBeginEditing则返回 NO。

于 2013-07-02T14:26:55.150 回答
0

我有一个类似的问题 - 视图控制器 A 中的 UITextView 是第一响应者。当点击屏幕上的另一个 UI 元素时,我将 View Controller B 推到导航堆栈上,但是当按下后退按钮并再次显示 View Controller A 时,UITextView 仍然是第一响应者。

我通过调用resignFirstResponderView Controller A's 中的文本视图解决了这个问题viewWillDisappear。请注意,如果您调用它,这将不起作用viewDidDisappear,因为此时文本视图不再是第一响应者。重要的是要确保文本视图实际上是您调用时的第一响应者resignFirstResponder,否则辞职无效。您可以通过检查isFirstResponder文本视图来检查它以进行调试。

于 2020-10-05T18:39:50.187 回答