When/How UITextView 会成为第一响应者吗?

When/How does a UITextView become a First Responder?

我是 iOS 开发的新手,最近了解到要使屏幕键盘消失,我们必须始终在文本视图上调用 resignFirstResponder。这会导致文本视图放弃其第一响应者状态,因此键盘消失,因为文本视图不需要响应。

不过我也注意到有 becomeFirstResponder 方法可以使视图成为第一响应者。但是,永远不会在文本视图上调用此方法。那么 when/how 当该方法从未被调用时,textview 会成为第一响应者吗?(至少,我不确定。我不确定它是否在系统的其他地方被调用)

我的理论是它必须已经是第一响应者才能退出第一响应者状态。

如果您想给 UITextField 焦点并显示键盘,您自己调用 becomeFirstResponder。

这对于基本上是表单的视图控制器很有用。例如,如果用户按下 "Sign Up" 按钮,您可能会按下带有几个文本字段的视图控制器,并在第一个字段上调用 ​​becomeFirstResponder 以自动为其提供焦点并打开键盘。

当用户点击文本字段时,

firstResponder 状态会自动为您处理。只要为 UITextField/UITextView 启用了用户交互,点击时就会出现键盘。

您可以使用委托方法 textViewDidBeginEditiing 或更广泛地监听键盘外观通知(UIKeyboardWillShowNotificationUIKeyboardDidShowNotification)来监视它。

此外,还有一些方法可以关闭键盘而不需要调用相应的方法resignFirstResponder(例如在容器视图上调用,或者设置滚动视图的UIScrollViewKeyboardDismissMode).

注意:在模拟器中,即使一切正常,也可能仍然没有出现键盘。在那种情况下,您只想确保为模拟器切换键盘硬件 (CMD+K)。