关于UITextfield不得不说的一件事

请支持原创, 如需转载, 请注明出处

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;   // return NO to not change text

UITextfield是个常用控件,但是一开始很奇怪他的代理模式中的上面这个方法用起来并不舒服,不如textview里的,但苹果不可能忽略这一点.
是的,仔细看文档就能发现它把TextDidChange做成了NotificationCenter的方式

UIKIT_EXTERN NSString *const UITextFieldTextDidBeginEditingNotification;
UIKIT_EXTERN NSString *const UITextFieldTextDidEndEditingNotification;
UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification;

调用方法如下:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myTextFieldChanged:) name:UITextFieldTextDidChangeNotification object:nil] ;

如果你对这个问题有研究, 在sof上能找到下面另一种解决方案:

    [self.textfield addTarget:self
                       action:@selector(myTextFieldChanged:)
             forControlEvents:UIControlEventEditingChanged];

当然, 这两种方案都是可行的, 看个人喜欢, 我个人亲自测试可行 .

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容