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

我有一个文本字段,用户input一个数字,它被转换为一个整数。

键盘设置为十进制数字。 除了粘贴function仍然启用,所以用户可以粘贴文本。

如果用户input一个非数字值,我想把它设置成@“error”。

我不想禁用粘贴function,因为我仍然希望用户能够复制和粘贴自己的数值到我的应用程序。

如果你想使用限制,只需要input数值,那么使用UITextField委托方法:

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

如果string是数字,这将返回YES ,否则返回NO

EDITE:

@亚当的答案是最好的检查文本只是数字或不。

简单地禁止input非数字字符是一种方法。 但是你问的是如何检测非数字…

使用

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