2012-01-11 74 views
1

我正在尝试验证仅用于数字的文本字段。对文本字段中的数字(0-9)进行验证

我使用下面的方法:如预期

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

ISNUMBER()函数无法正常工作。我只想验证数字。卡在这里了。任何其他内置函数来检查数字甚至字符?

+1

问题是什么? – 2012-01-11 19:26:10

+3

这是否工作?如果不是,那么情况并非如预期的那样?请具体说明您遇到困难的地方。 – PengOne 2012-01-11 19:26:22

+1

可能重复的[iPhone如何检查一个字符串是仅数字](http://stackoverflow.com/questions/1320295/iphone-how-to-check-that-a-string-is-numeric-only) – PengOne 2012-01-11 19:33:56

回答

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"); 
+0

感谢Tomasz。它为我工作。 :) – user1140780 2012-01-11 20:17:54

-2

对于iOS,您应该只允许出现数字键盘。用户将没有选择输入除数字以外的任何其他值。

+2

如何复制/粘贴,自动更正,外接键盘? – mvds 2012-01-11 19:26:32

+2

除非它们连接了外部键盘... – 2012-01-11 19:26:36

3

这里要做的正确的事情是实现UITextFieldDelegatetextField:shouldChangeCharactersInRange:replacementString:只接受数字字符。

在委托方法中,返回YES并去除不在decimal character set中的任何字符。

+0

@ben检查我的答案。 – AAV 2012-01-11 19:51:44

+0

如果char代表一个十进制数字,那么'isnumber()'函数接受一个C'char'并返回'1',否则返回'0'。它不能做你想要的东西。 – 2012-01-11 19:54:36

+0

我更喜欢这个。最好在前端解决它,而不是让用户输入错误并警告它们。与数字键盘演示文稿一起使用对我来说听起来不错。 – 2012-01-11 20:37:46

4

您还没有发布任何代码,你的函数isnumber,所以这是不可能出现诊断问题。然而,从头开始编写功能,这里是我会做什么:

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

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

+1

用户仍然可以粘贴非数字文本或使用外部键盘。如果代码假定数字输入,这可能会破坏应用程序。 – 2012-01-11 19:55:38

+0

我认为你是对的。 – AAV 2012-01-11 19:59:03

+0

-1,请在回答之前阅读其他答案! – mvds 2012-01-11 20:41:53