如何验证UITextField中的输入(即数字输入)

9 iphone validation numbers objective-c uitextfield

我是iPhone开发的新手,我有一个似乎是一个简单的问题,我不知道.如何验证用户在文本字段中输入数字和小数?

我尝试了很多不同的东西,但我能得到的关闭只允许形式的数字字符串:5.34或23.89.我需要它来允许数字,如; 0.50或432.30,只是最后一个输入值为零的东西.我尝试通过将字符串输入转换为浮点数然后返回字符串来检查字符串输入,但得到上述结果.

任何帮助都会很棒(与示例代码一样!)谢谢!

Sea*_*mus 13

我有类似的要求,解决方案最终变得相当微不足道.不幸的是,与此问题相关的许多问题和答案都是关于验证或格式化数值,而不是控制用户可以输入的内容.

shouldChangeCharactersInRange委托方法的以下实现是我的解决方案.和往常一样,RegularExpressions在这种情况下摇摆不定.RegExLib.com是有用的RegEx的绝佳来源.我不是一名RegEx大师,总是在努力将它们放在一起,所以欢迎任何改进它的建议.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if (textField == self.quantityTextField)
    {
        NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];

        NSString *expression = @"^([0-9]+)?(\\.([0-9]{1,2})?)?$";
        NSError *error = nil;

        NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:expression 
                                                                               options:NSRegularExpressionCaseInsensitive 
                                                                                 error:&error];
        NSUInteger numberOfMatches = [regex numberOfMatchesInString:newString
                                                            options:0
                                                              range:NSMakeRange(0, [newString length])];        
        if (numberOfMatches == 0)
            return NO;        
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码允许用户输入这些值:1,1.1,1.11,.1,.11


Yar*_*k T 1

Dave DeLong 尝试发布的问题是1320295,看起来非常相关。这似乎是一个老问题,您可能已经找到了解决方案,如果您分享它,那就太好了 =)