我正在尝试在textField中验证文本长度。这是我尝试的
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSString *textLenght = [NSString stringWithFormat:@"%@", [textField text]];
if ([textLenght length] > 5)
{
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Message"
message:@"Too long"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil, nil];
[alert show];
[alert release];
return NO;
}
return YES;
}
此代码效果很好。当我输入超过5个字符时,会显示警告框。问题是,当我尝试删除文本字段的最后一个字符时,会再次显示警告框。
如何解决这个问题?
答案 0 :(得分:6)
您必须先创建实际的字符串
NSString *str = [textField.text stringByReplacingCharactersInRange:range withString:text];
之后检查长度
int length = str.length;
继续进行if(长度)检查。
这种方式首先创建所需的字符串(也考虑退格)。
答案 1 :(得分:2)
要检查是否已按下删除按钮,您需要检查“string”是否等于@“”:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([string isEqualToString:@""])...
}
答案 2 :(得分:0)
您需要的是阻止从头开始添加第5个符号,然后您可以删除...
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSLog(@"Enter");
NSInteger oldLength = [textField.text length];
NSInteger newLength = oldLength + [string length] - range.length;
if(newLength >= 5){
return NO;
}
return YES;
}