- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
// if (range.location >= 20){
// // return NO; // return NO to not change text
//
// NSString *textViewStr = [textField.text substringToIndex:19];
// textField.text = textViewStr;
// }
//先吧2个加起来
NSString *myTextString = [NSString stringWithFormat:@"%@%@",textField.text,string];
NSLog(@"111111textField =%@ string = %@ myTextString = %@",textField.text,string,myTextString);
if (myTextString.length >= 20){
//切到19个
NSString *textViewStr = [myTextString substringToIndex:18];
//把准备添加的内容 改成空
// string = @"";
textField.text = textViewStr;
// _textField.text = textViewStr;
return myTextString.length<=20?YES:NO;
}
NSLog(@"111111textField =%@ string = %@ myTextString = %@",textField.text,string,myTextString);
// NSString *myTextString = [NSString stringWithFormat:@"%@%@",textField.text,string];
// NSLog(@"111111textField =%@ string = %@ myTextString = %@",textField.text,string,myTextString);
// textField.text = myTextString.length<=20?textField.text:[myTextString substringFromIndex:myTextString.length-20];
//
textField.text = myTextString.length<=20?textField.text:[myTextString substringToIndex:20];
//
// NSLog(@"22222textField =%@ string = %@ myTextString = %@",textField.text,string,myTextString);
return myTextString.length<=20?YES:NO;
return YES;
上面就能实现 限制到19个字的问题
但是当iphone6 的 联想字出现时候 以上得方法就不走了
然后得在下面加上以下方法才行
[cell.inputTextField addTarget:self action:@selector(myUIControlEventEditingChanged:) forControlEvents:UIControlEventEditingChanged];
-(void)myUIControlEventEditingChanged:(UITextField *)field
{
NSLog(@"cccUIControlEventEditingChanged");
if (field.text.length > 20) {
NSLog(@"超过25了");
NSString *textViewStr = [field.text substringToIndex:19];
//把准备添加的内容 改成空
// string = @"";
field.text = textViewStr;
}
}
NSString *textViewStr = [myTextString substringToIndex:18]; 这里假如不是双数,会导致 摇晃手机的撤销和表情输入出错