UITextField 禁止🈲特殊字符输入

2020-07-03  本文已影响0人  司空123

UITextField 输入框限制特殊字符的输入,只允许中英文及数字输入,直接上代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
        
    // 1. 去空格,英文输入时联想状态包含空格
    string = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    
    // 2. 当输入符合规则 或者退格键 或者回车键时允许输入
    if ([self isInputCharAvailable:string] || [string isEqualToString:@""] ||  [string isEqualToString:@"\n"]) {
        return YES;
    } else {
     
        return NO;
    }
    
    return YES;
}
/// 输入字符是否合法 (字母、数字、中文的判断(不包括空格))
- (BOOL)isInputCharAvailable:(NSString *)str {
   
    // ➋➌➍➎➏➐➑➒ 中文键盘拼音9键输入
    NSString *pattern = @"^[➋➌➍➎➏➐➑➒a-zA-Z\u4E00-\u9FA5\\d]*$";
    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", pattern];
    BOOL isMatch = [pred evaluateWithObject:str];
    return isMatch;
}

坑:

  1. 中文键盘拼音9键输入,拦截到的字符是➋➌➍➎➏➐➑➒这些玩意

2.英文输入时单词联想时,前面默认多了一个空格,所以多了第一步的处理
3.对于种类繁多的特殊字符,上面的方法依然有一些漏网字符,如🉐🈵🈲🈶🈺🈸🈴,如果想赶尽杀绝,需要单独处理了

上一篇下一篇

猜你喜欢

热点阅读