如何检测文本字段中是否包含文本而不是数值?

时间:2014-04-24 04:02:20

标签: ios objective-c cocoa-touch uitextfield

我有一个文本字段,用户输入一个数字并将其转换为整数。

键盘设置为十进制数字。除了粘贴功能仍然启用,因此用户可以将文本粘贴到其中。

如果用户在其中输入非数值,我想将其设置为将标签更改为“”错误“。

我不想禁用粘贴功能,因为我仍然希望用户能够将自己的数值复制并粘贴到我的应用中。

3 个答案:

答案 0 :(得分:3)

如果您想要使用的限制只需要输入数值,那么请使用UITextField的委托方法:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
   NSCharacterSet *nonNumberSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
   return ([string stringByTrimmingCharactersInSet:nonNumberSet].length > 0) || [string isEqualToString:@""];
}  

如果字符串是数字,则返回 YES ,否则返回 NO

<强> EDITE:

@ Adam&#39; 答案最适合检查文字是否为数字。

答案 1 :(得分:2)

简单地禁止输入非数字字符是一种方法。但你问的是你如何发现非数字......

使用

NSRange range = [myTextField.text rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet]];
if(range.location == NSNotFound) {
    // then it is numeric only
}

答案 2 :(得分:0)

NSRange    range    =    [myTextField.text    rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet]];
相关问题