UITextfield检查它是否为数字

时间:2010-03-31 23:52:55

标签: objective-c cocoa cocoa-touch

如何检查用户是否在我的UITextField中输入了一个号码。基本上它是我在0-100之间接受的标记,它可以是小数。我听说我可以尝试将其转换为NSNumber类型,看看它是否返回null。

我试过了:

if(grade.text doubleValue] == 0){
   //Not a number
}

但是它仍然可以接受“23f”。

2 个答案:

答案 0 :(得分:0)

使用NSScanner检测字符串中是否存在有效整数。

NSScanner * scanner = [NSScanner scannerWithString:myTextField.text];
NSInteger * integer;
if([scanner scanInteger:&integer]) {
  // valid number found
} else {
  // cry about it
}

您可以通过验证UITextField委托方法textField:shouldChangeCharactersInRange:replacementString:中的文本来改进此问题,以防止用户输入无效值。

答案 1 :(得分:0)

这似乎是NSRegularExpression的一个很好的用例。我认为这样可行:

NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[0-9\.]{1,2}|100" 
                  options:NSRegularExpressionCaseInsensitive 
                    error:&error];
NSUInteger matches = [regex numberOfMatchesInString:myTextField.text 
                                            options:0  
                                              range:NSMakeRange(0, [myTextField.text length])]

如果匹配等于0(未找到匹配项),则表示您没有在该字段中输入数字。这只是我的头脑 - 我还没试过。