关于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];

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

你可能感兴趣的:(关于UITextfield不得不说的一件事)