如何验证UITextField文本?

时间:2010-12-18 18:05:00

标签: iphone objective-c cocoa-touch uitextfield

我需要确保用户只在我的文本字段中输入数字。我将键盘设置为数字,但如果用户使用外部键盘,则可能会输入一个字母。如何检测textfield.text中的任何字符是否为字符而不是数字?

谢谢!

3 个答案:

答案 0 :(得分:4)

您可以选择输入textField的字符

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

    /*  this ensures that ONLY numbers can be entered, no matter what kind of keyboard is used  */
    NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789"];

    for (int i = 0; i < [string length]; i++) {
        unichar c = [string characterAtIndex:i];
        if (![myCharSet characterIsMember:c]) {
            return NO;
        }
    }

    /*  this allows you to choose how many characters can be used in the textField  */
    NSUInteger newLength = [textField.text length] + [string length] - range.length;
    return (newLength > 7) ? NO : YES;
}

答案 1 :(得分:1)

每当用户输入密钥时,将调用此文本字段委托。

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

在此内部检查文本是否包含字符。如果它是你的行动。比如提示警报或其他什么。

答案 2 :(得分:1)

在文本字段的委托中实现textField:shouldChangeCharactersInRange:replacementString:,如果传递的字符串包含无效字符,则返回NO