【问题标题】:get notified when UITextField becomeFirstResponder当 UITextField 成为FirstResponder 时得到通知
【发布时间】:2013-01-24 22:19:09
【问题描述】:

UITextFieldbecomeFirstResponder 时我如何获得通知?

我可以像isFirstResponder 一样检查或通过becomeFirstResponder 设置成为第一响应者

我想在用户将此文本字段设为第一响应者时收到通知或处理事件。

谢谢。

【问题讨论】:

    标签: iphone ios uitextfield first-responder becomefirstresponder


    【解决方案1】:

    您需要成为文本字段的委托并实现此可选委托方法:

    - (void)textFieldDidBeginEditing:(UITextField *)textField; 
    

    【讨论】:

      【解决方案2】:

      除了实现UITextFieldDelegate方法textFieldDidBeginEditing:,您还可以注册UITextFieldTextDidBeginEditingNotification通知。

      通知方式可以是:

      - (void)someTextFieldDidBeginEditing:(NSNotification *)notification {
          UITextField *textField = (UITextField *)notification.object;
      }
      

      【讨论】:

        【解决方案3】:

        委托绝对是要走的路。不幸的是,在我的情况下我不能使用它,因为控制器是我的 UITextField 子类的代表,我需要修改它的占位符文本。相反,我重写了方法- (BOOL)canBecomeFirstResponder;- (BOOL)resignFirstResponder;。一定要打电话给super。

        【讨论】:

        • 是的,你记得打电话给 super 的评论解决了我的问题。
        【解决方案4】:

        对于 OSX,您应该注意在依赖 NSControlTextDidBeginEditingNotification 时按钮会产生副作用。

        当您开始编辑,按一些按钮,然后继续编辑文本字段时,当您继续编辑时,您将不会再收到NSControlTextDidBeginEditingNotification

        如果此行为导致问题,UITextFieldTextDidChangeNotification 可能是替代方案。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-23
          • 1970-01-01
          相关资源
          最近更新 更多