[iOS] 限制输入中文的两个办法 ==>正则or键盘

正则判断

//  ^[\u4e00-\u9fa5]*$ 限制只能输入中文的正则
 if(![self matchStringFormat:self.accountTextField.text withRegex:@"^[\u4e00-\u9fa5]*$"]){
         [MBProgressHUD showHUDAddedTo:self.view WithString:@"请输入中文,不能包含字母或数字"];
    }

#pragma mark - 正则判断
- (BOOL)matchStringFormat:(NSString *)matchedStr withRegex:(NSString *)regex
{
    //SELF MATCHES一定是大写
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
    return [predicate evaluateWithObject:matchedStr];
}

键盘限制
textfiled的代理方法 (这样限定后的字符,键盘输入时 将不能显示)

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;   // return NO to not change text
{
    if (textField.tag == 1000991) {
        NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ALPHANUM] invertedSet];
        NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
        if ([string isEqualToString:@""]) {
            return YES;
            
        }
        
        if ([string isEqualToString:filtered]) {
            return NO;
        }else{
            return YES;
        }
        
    }

    return YES;
}

所以,通过这两种方法,都可以限制某种类型的字符输入,如果要限制其他的 要么替换正则表达式 要么就是限制输入的具体字符就可以

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值