吴江之畔、何不是项王,战他个荡气回肠。
目前对于App来说,交易密码、登陆密码、等输入框情形都需要限制输入的字符个数。运用输入框属性我们来做一个数字限制(单独数字使用)和文字限制(文字数字双份使用,文字限制内部分包含直接对数字情况下的直接限制),不然把数字的运用到文字限制上就会出现差错。
#pragma mark -- 设定可输入12位数
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSInteger maxNumber = 12;//字数 放空为全局属性
NSString * IndexString = [textField.text stringByReplacingCharactersInRange:range withString:string];
if (IndexString.length > maxNumber && range.length!=1){
textField.text = [IndexString substringToIndex: maxNumber];
return NO;
}
return YES;
文字限制
#pragma mark -- 限制输入字数
- (void)textFieldDidChange:(UITextField *)textField
{
//最大长度
NSInteger maxNumber = 12;
NSString *IndexString = textField.text;
NSString *lang = [[UIApplication sharedApplication]textInputMode].primaryLanguage;
//zh-Hans 为简体中文键盘 判断字符就会一直走到简体中文类型下 判断字符需要更换键盘类型
if ([lang isEqualToString:@"zh-Hans"]) {
//中文输入
UITextRange *selectedRange = [textField markedTextRange];
//获取高亮
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
if (!position) {// 没
if (IndexString.length > maxNumber) {
textField.text = [IndexString substringToIndex:maxNumber];
[textField resignFirstResponder];
}
} else {
//有
}
} else {//中文以外的直接限制
if (IndexString.length > maxNumber) {
textField.text = [IndexString substringToIndex:maxNumber];
}
}
}