iOS 实时监控UITextField的 输入内容

1,451 阅读1分钟

代理

textField.delegate = self;
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
     NSLog(@"textField - 正在编辑, 当前输入框内容为: %@",textField.text);
    return YES;
}

添加Target 事件

[self.textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];`

     
     
-(void)textFieldDidChange:(UITextField *)textField{
     
}

使用 NSNotificationCenter 添加监听


[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldValueChange:) name:UITextFieldTextDidChangeNotification object:nil];
-(void)textField2TextChange:(NSNotification *)noti{

    UITextField *currentTextField = (UITextField *)noti.object;
    NSLog(@"textField - 输入框内容改变,当前内容为: %@",currentTextField.text);
}

使用 KVO 添加监听

    [self.textField addObserver:self forKeyPath:@"text" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
    if ([keyPath isEqualToString:@"text"] && object == self.textField) {
        NSLog(@"textField - 输入框内容改变,当前内容为: %@",self.textField.text);
    }else{
        [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
    }
}