使用监听方式实现:
//添加事件
[_textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
//实现方法
- (void)textFieldDidChange:(UITextField *)textField{
if (textField.text.length > 11) {
//提示语
[self showMessage:@"输入限制20个字符以内"];
//截取
textField.text = [textField.text substringToIndex:11];
}
}
问题:你要限制输入长度为11个字符,当你输入11个字符后监听的确可以很好的控制不让你继续输入,但是问题也随之而来,当你把光标移动到输入内容中间的位置后,你是可以继续输入,并且光标会移动到最后,这很不符合要求.
更改方案:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField == searchBar) {
if (range.length == 1 && string.length == 0) {
return YES;
}
else if (searchBar.text.length + string.length >= 11) {
NSMutableString *oldStr = [[NSMutableString alloc]initWithString:textField.text];
[oldStr insertString:string atIndex:range.location];
searchBar.text = [oldStr substringToIndex:11];
return NO;
}
}
return YES;
}
效果:当输入到11位之后,从中间输入,会自动删除末尾超出的部分