验证文本字段中的数字(0-9)

时间:2012-01-11 19:23:48

标签: objective-c ios validation uitextfield

我正在尝试仅为数字验证文本字段。

我使用以下方法:

if(isnumber(noOfPassengers.text.intValue))
{
    NSLog(@"value entered correctly.");
    return ;
}
else
NSLog(@"Error: Only numerica values are accepted");

isnumber()函数未按预期工作。我想仅验证数字。卡在这里。还有其他内置功能来检查数字甚至是字符吗?

5 个答案:

答案 0 :(得分:4)

您尚未发布函数isnumber的任何代码,因此无法在此处诊断问题。但是,从头开始编写函数,这就是我要做的事情:

-(BOOL)isNumeric:(NSString*)inputString{
    NSCharacterSet *alphaNumbersSet = [NSCharacterSet decimalDigitCharacterSet];
    NSCharacterSet *stringSet = [NSCharacterSet characterSetWithCharactersInString:inputString];
    return [alphaNumbersSet isSupersetOfSet:stringSet];
}

答案 1 :(得分:3)

这里要做的正确的事情是将UITextFieldDelegate的{​​{3}}实现为仅接受数字字符。

在委托方法中,返回YES并删除textField:shouldChangeCharactersInRange:replacementString:内不存在的任何字符。

答案 2 :(得分:1)

使用NSScanner:

int iValue;

if (noOfPassengers.text.length > 0 && [[NSScanner scannerWithString:noOfPassengers.text] scanInt:&iValue]) {
    //do smomething with iValue (int value from noOfPassengers.text)
    NSLog(@"value entered correctly.");
    return ;
}
else
    NSLog(@"Error: Only numerica values are accepted");

答案 3 :(得分:-2)

对于iOS,您应该只允许使用数字键盘。用户将无法输入除数字之外的任何其他值。

答案 4 :(得分:-2)

简单回答你的问题只是显示数字键盘然后检查值。您不必实现UITextFieldDelegate的@Ben.s建议。