UITextField监听输入内容总结:

针对 UITextField的输入内容的监测,苹果提供了以下几个方案:

1. addTarget 方案(realNumField.addTarget(self, action: #selector(changeText), for: .editingChanged))。

2. 通知方法(kNotificationCenter.addObserver(self, selector: #selector(checkTextFieldText), name: NSNotification.Name.UITextFieldTextDidChange, object: nil))。

3. func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {}。

4. func textFieldDidEndEditing(_ textField: UITextField) {}

针对以上四种方案,经过打断点,可以发现:最先走的是3代理方法,其次是1、在后是2,最后是4方法。3中最先走,因此经常用来做输入格式的纯数字、小数点位数等正则验证;1和2方法如果区分的话,就是一个页面如果有多个 cell 绑定了这个 field,则使用通知,每次输入,所有引用 field 的输入框都会接收到通知,都会进行输入检测,而 addtarget 方法则只对当前输入的 field 进行检测,至于其它地方的引用,则不做检测。而4是最完整的,在点击完成按钮(如果项目中使用了 IQKeyboard)、换下一项输入框之后才会调用该方法,无法做到实时监听;至于点击 field 右侧的删除按钮,2、3可以监听得到,1、4不能;因此,可以根据项目需求来进行有针对性的组合使用。

你可能感兴趣的:(UITextField监听输入内容总结:)