今天遇到一个输入框需求,输入字数不能超过20。
我首先使用的是UITextField代理方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (textField == self.takeWordField) {
NSString *resultStr = [NSString stringWithFormat:@"%@%@",self.takeWordField.text,string];
if (resultStr.length <= 20) {
return YES;
}else{
return NO;
}
}
}
测试时候发现如果用系统输入法的候选字输入时,代理方法监测不到。
后来改用:
[self.takeWordField addTarget:self action:@selector(changeValue:) forControlEvents:UIControlEventEditingChanged];
-(void)changeValue:(UITextField *)field{
NSLog(@"length >> %@",field.text);
if (field.text.length > 20) {
self.takeWordField.text = [field.text substringToIndex:20];
}
}
完美解决,希望对你有帮助!