验证 UITextField 不包含字母

Posted

技术标签:

【中文标题】验证 UITextField 不包含字母【英文标题】:Verify that UITextField does not contain letters 【发布时间】:2013-03-26 17:14:44 【问题描述】:

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

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

提前致谢!

【问题讨论】:

查看字符集文档:developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/… 【参考方案1】:

我认为这应该可行:

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

这里记录了所有可用的字符集:NSCharacterSet

【讨论】:

【参考方案2】:

为了增加更多好处并防止错误,如果您使用故事板,请选择您的 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];


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

【讨论】:

技术上不太正确的解决方案,只是因为您可以在那里粘贴任何内容。包括字母和表情符号。 好点。我尝试使用上面接受的响应作为故障安全,并在调用按钮操作时使用 if 语句检测到这一点,就像我自己的应用程序中的情况一样。我使用 if/else 语句来处理错误,并弹出一个通知来说明它为什么不接受。感谢您指出这一点。 在这个问题之后我必须创建的许多应用程序中,我使用了 UITextField 的一个子类,它限制复制和粘贴操作以及您建议的键盘类型,所以这可能是要走的路太;-) 愿意分享这个小秘密吗? :-) 查看我编辑的代码。这就是我检查故意错误的方式。 至少有两种好的方法,我会尽快发布

以上是关于验证 UITextField 不包含字母的主要内容,如果未能解决你的问题,请参考以下文章

如何在iOS swift 4中进行名字验证?

在输入时逐字母地验证UITextField文本

字母验证码有空格怎样写

使用 shouldChangeCharactersInRange 在 UITextField 验证中考虑退格

需要在自定义 UITextField 中调用 shouldChangeCharactersInRange 并调用视图控制器函数通知更新

编辑开始时更改 UITextField 背景