UITextField 只允许输入数字和字母 解决联想中文等问题

- (void)reTextFieldDidChange:(UITextField *)textField{//输入文本时调用

    //将输入的小写x转换成大写

    textField.text = [textField.text stringByReplacingOccurrencesOfString:@"x" withString:@"X"];

    //解决联想输入的问题

    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"Xx0123456789"] invertedSet];//里面放允许输入的字符

   textField.text = [[textField.text componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

    if (textField.text.length > 18) {

        textField.text = [textField.text substringToIndex:18];

    }

}

 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

    //设置只能输入字母数字  和 文本框最大长度

    NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"Xx0123456789"] invertedSet];

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

    return [string isEqualToString:filtered] && (textField.text.length - range.length + string.length) <= 18;

}

转载于:https://my.oschina.net/biyu6/blog/719656

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值