验证 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 不包含字母的主要内容,如果未能解决你的问题,请参考以下文章
使用 shouldChangeCharactersInRange 在 UITextField 验证中考虑退格
需要在自定义 UITextField 中调用 shouldChangeCharactersInRange 并调用视图控制器函数通知更新