除了点和下划线外,如何限制UITextField中的特殊字符?

我try 了下面的代码片段,但没有成功:

#define ACCEPTABLE_CHARECTERS @" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_."

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
         NSCharacterSet *acceptedInput = [NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARECTERS];
        if (![[string componentsSeparatedByCharactersInSet:acceptedInput] count] > 1){
            NSLog(@"not allowed");
            return NO;
        }
        else{
            return YES;
        }
}

推荐答案

试试下面给出的代码块,对我来说效果很好.

SWIFT 3.0

let ACCEPTABLE_CHARACTERS = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_"

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let cs = NSCharacterSet(charactersIn: ACCEPTABLE_CHARACTERS).inverted
    let filtered = string.components(separatedBy: cs).joined(separator: "")

    return (string == filtered)
}

Objective C

#define ACCEPTABLE_CHARACTERS @" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_."

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string  {
      NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARACTERS] invertedSet];

      NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

      return [string isEqualToString:filtered];
}

希望它也能对你有用.

Objective-c相关问答推荐

NSString "nil or empty" 判断 - 这完成了吗?

如何使用 NSFileManager 删除目录及其内容

将谷歌 map 添加为子视图会使 iOS 应用程序因 exc_bad 崩溃

Xcode 预处理器输出

如果安装了应用程序,如何以编程方式判断?

无法编译连接:错误是什么意思?

dispatch_get_global_queue vs dispatch_get_main_queue

在运行时判断 iOS 版本?

具有高质量代码的开源 Objective-C 项目?

NSManagedObjectContext:异常断点在 save: 方法处停止,但没有日志(log)/崩溃/错误

隐藏 NSTableView 标头?

判断 NSString 是否仅包含字母数字 + 下划线字符

HTML 内容适合 UIWebview 而无需缩小

如何在 Objective-C 中添加具有自己的 UIViewController 的子视图?

如何判断数组是空还是空?

如何在 xcode 项目中启用/禁用 ARC?

无法从其 DataSource 获取单元格

info.plist 中的Application Requires iPhone Environment键是什么意思?

iOS 上的电话号码格式

如何将按钮放在不会在 iOS 中随表格滚动的 UITableView 上