遇到的问题
当使用UITextField
控件时发现,通过UITextField
的代理方法- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
获取textField.text
中的信息与输入框输入的信息不同步,即textField.text
显示的信息是上次用户输入的内容。
解决方法
直接上代码
- (BOOL)textField:(UITextField *)textField
shouldChangeCharactersInRange:(NSRange)range
replacementString:(NSString *)string {
NSString *textFieldText = [textField.text stringByReplacingCharactersInRange:range withString:string];
if ([textFieldText isEqualToString:self.textFieldString]) {
[self.finishButton setEnabled:NO];
[self.finishButton setTitleColor:[UIColor lightGrayColor] forState:UIControlStateDisabled];
} else {
[self.finishButton setEnabled:YES];
[self.finishButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
}
return YES;
}
通过该处理,可以同步获取用户在输入框输入的信息,便于更好的做一些判断处理。
项目中应用
个人信息页,修改个人信息时,如果用户没有修改信息,或修改后的信息与之前信息一致时,就没必要向服务器发起修改请求,此时可以禁用提交修改信息的button。因此要用上面的方法做一些处理。
效果图:
demo.gif