验证UITextField不包含字母

时间:2013-03-26 17:14:45

标签: ios objective-c cocoa-touch nsstring uitextfield

如何查看UITextField字母中的文字?我希望我的UITextField仅包含数字字符,短划线,+符号,空格等,但 NO 字母。

那么如何检查我的UITextField.text 是否包含字母?

提前致谢!

2 个答案:

答案 0 :(得分:8)

我认为这应该有效:

if ([myTextField.text rangeOfCharacterFromSet:[NSCharacterSet letterCharacterSet]].location != NSNotFound) {
  NSLog(@"This string contains letters.");
}

此处记录了所有可用的字符集:NSCharacterSet

答案 1 :(得分:0)

要添加进一步的好处并防止错误,如果您使用的是故事板,请选择UITextField并打开属性检查器(右上方的栏目顶部带有盾牌图标),并在该视图的中点处是5个下拉菜单,其中一个称为Keyboard。你有几个控制器,其中一个是Numbers and Punctuation

这会将键盘设置为仅显示数字和所有可用的标点符号。将其与:

结合起来
//SET LEGAL CHARACTERS
NSCharacterSet* tSet = [NSCharacterSet characterSetWithCharactersInString:
                        @"abcdef1234567890ABCDEF"];//whatever amount or type of characters you want to use
NSCharacterSet* invSet = [tSet invertedSet]; 

if (yourString rangeOfCharacterFromSet:invSet].location != NSNotFound){
    [[[UIAlertView alloc] initWithTitle:@"Input Error"
                                message:@"Make sure the value entered is numerical or punctual only."
                               delegate:nil
                      cancelButtonTitle:@"OK"
                      otherButtonTitles:nil] show];

}

并且您有一个简单易用的应用程序,可以防止用户意外或故意导致错误。