如何阻止用户在特定范围内的文本字段中输入文本。

时间:2011-12-13 08:13:17

标签: objective-c ios

我怀疑在输入8位数字后如何阻止用户输入文本字段中的任何内容?这意味着在文本字段长度达到8位后键盘将被禁用,但如果用户删除任何数字,键盘将再次启用?

这是代码。请帮助我,提前谢谢。目前,它只会停止到8位数,但不允许我再删除。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    NSCharacterSet *charSet = [NSCharacterSet characterSetWithCharactersInString:DIGIT_CHARSET];
    NSString *text = [string stringByTrimmingCharactersInSet:[charSet invertedSet]];

    if ([textField.text length] == 8) {
        return NO;
    }else 
    {
        return [text isEqualToString:string];
    }
}

2 个答案:

答案 0 :(得分:1)

在您的代码中尝试此操作。它不会允许在8之后写任何数字,但如果你删除那么它将允许你写数字,直到它是8。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if (range.location > 7)
        return NO;
    else
        return YES; 
}

答案 1 :(得分:0)

您需要检查textField中已更改文本的长度。

NSString* changedText = [textField.text stringByReplacingCharactersInRange: range withString: string];
if ([changedText length] >= 8)
    return NO;