美文网首页
UITextField 禁止🈲特殊字符输入

UITextField 禁止🈲特殊字符输入

作者: 司空123 | 来源:发表于2020-07-03 09:27 被阅读0次

    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.对于种类繁多的特殊字符,上面的方法依然有一些漏网字符,如🉐🈵🈲🈶🈺🈸🈴,如果想赶尽杀绝,需要单独处理了

    相关文章

      网友评论

          本文标题:UITextField 禁止🈲特殊字符输入

          本文链接:https://www.haomeiwen.com/subject/ytkrqktx.html