【问题标题】:Verify that UITextField does not contain letters验证 UITextField 不包含字母
【发布时间】:2023-03-15 21:00:07
【问题描述】:

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

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

提前致谢!

【问题讨论】:

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


【解决方案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 的一个子类,它限制复制和粘贴操作以及您建议的键盘类型,所以这可能是要走的路太;-)
    • 愿意分享这个小秘密吗? :-) 查看我编辑的代码。这就是我检查故意错误的方式。
    • 至少有两种好的方法,我会尽快发布
    猜你喜欢
    • 2012-09-07
    • 1970-01-01
    • 2013-04-28
    • 2017-11-12
    • 2010-11-13
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    相关资源
    最近更新 更多