请支持原创, 如需转载, 请注明出处
- (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];
当然, 这两种方案都是可行的, 看个人喜欢, 我个人亲自测试可行 .