我正在尝试仅为数字验证文本字段。
我使用以下方法:
if(isnumber(noOfPassengers.text.intValue))
{
NSLog(@"value entered correctly.");
return ;
}
else
NSLog(@"Error: Only numerica values are accepted");
isnumber()函数未按预期工作。我想仅验证数字。卡在这里。还有其他内置功能来检查数字甚至是字符吗?
答案 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建议。