让textField.text与输入的信息保持同步

遇到的问题

当使用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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。