验证文本字段长度

foh*_*oho 0 objective-c uitextfield uialertview ios

我正在尝试在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;
}
Run Code Online (Sandbox Code Playgroud)

这段代码效果很好.当我输入超过5个字符时,会显示警告框.问题是当我尝试删除文本字段的最后一个字符时,会再次显示警告框.

如何解决?

Eug*_*ene 6

您必须先创建实际的字符串

NSString *str = [textField.text stringByReplacingCharactersInRange:range withString:text];
Run Code Online (Sandbox Code Playgroud)

你事后检查长度

int length = str.length;
Run Code Online (Sandbox Code Playgroud)

并继续if(长度)检查.

这种方式首先创建所需的字符串(也考虑退格).