项目中的短信验证码输入使用了第三方控件,当收到短信之后点击验证码自动输入之后出现了执行两次回调方法的bug。
经排查问题出现在如下代码中:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChangeValue:) name:UITextFieldTextDidChangeNotification object:_textField];
-(void)textFieldDidChangeValue:(UITextField *)textField{ }
改为下面的代码之后bug消失:
[_textField addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventEditingChanged];
-(void)valueChanged:(UITextField *)textField{ UITextRange *selectedRange = textField.markedTextRange;//获取高亮部分 if (selectedRange == nil || selectedRange.empty) { }else{ return; } }