【问题标题】:When/How does a UITextView become a First Responder?UITextView 何时/如何成为第一响应者?
【发布时间】:2023-03-24 19:15:02
【问题描述】:

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

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

我的理论是它必须已经是第一响应者才能辞去第一响应者的身份。

【问题讨论】:

  • 当用户点击文本字段时为您执行。您可以使用委托方法textViewDidBeginEditiing 或更广泛地通过侦听键盘通知(例如UIKeyboardWillShowNotification)来监控它
  • 所以它是自动发生的,即当用户点击文本字段时,系统会通过调用 becomeFirstResponderMethod 为我处理它?
  • 是的。只要为 textField/View 启用了用户交互,键盘就会在点击时弹出。也有一些方法可以在不需要调用resignFirstResponder 的情况下处理它(例如在容器视图上调用endEditing:,或设置滚动视图的UIScrollViewKeyboardDismissMode)。在模拟器中,键盘可能仍然没有显示,在这种情况下,您只想确保键盘硬件已切换(Cmd+K)
  • 您的评论回答了我的问题。如果您想“回答”这个问题,以便我将其标记为正确答案(从而为您提供更多声誉),欢迎您这样做。
  • 谢谢,谢谢。答案已发布

标签: ios cocoa-touch uitextview


【解决方案1】:

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

您可以使用委托方法textViewDidBeginEditiing 进行监控,或者更广泛地说,通过监听键盘外观通知(UIKeyboardWillShowNotificationUIKeyboardDidShowNotification)。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      相关资源
      最近更新 更多