UITextField对中英文混合输入的长度限制
2014-04-23 15:38
197 查看
转载自:http://blog.sina.com.cn/s/blog_60f977e70101g4gj.html
主要步骤:
1. 添加监听
2. 实现监听方法
a. 键盘可以输入,但是中文不能输入到控件中
b. 键盘禁止输入
3. 移除监听器:
主要步骤:
1. 添加监听
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFiledEditChanged:) name:@"UITextFieldTextDidChangeNotification" object:alertTextField];
2. 实现监听方法
a. 键盘可以输入,但是中文不能输入到控件中
- (void)textFiledEditChanged:(NSNotification *)obj { UITextField *textField = (UITextField *)obj.object; NSString *toBeString = textField.text; NSString *lang = [textField.textInputMode primaryLanguage]; // 键盘输入模式 if ([lang isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写 UITextRange *selectedRange = [textField markedTextRange]; //获取高亮部分 UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0]; // 没有高亮选择的字,则对已输入的文字进行字数统计和限制 if (!position) { if (toBeString.length > kNameMaxLength) { textField.text = [toBeString substringToIndex:kNameMaxLength]; } } // 有高亮选择的字符串,则暂不对文字进行统计和限制 } // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况 else { if (toBeString.length > kNameMaxLength) { textField.text = [toBeString substringToIndex:kNameMaxLength]; } } }
b. 键盘禁止输入
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { NSLog(@"%d-%d", textField.text.length, (string.length - range.length)); return textField.text.length + (string.length - range.length) <= kNameMaxLength; } - (void)textFiledEditChanged:(NSNotification *)notification { UITextField *textField = notification.object; if (textField.markedTextRange == nil && textField.text.length > kNameMaxLength) { [textField setText:[textField.text substringToIndex:kNameMaxLength]]; } }
3. 移除监听器:
[[NSNotificationCenter defaultCenter]removeObserver:self name:@"UITextFieldTextDidChangeNotification" object:textField];
相关文章推荐
- 解决控件中中英文混合输入长度限制问题
- iOS UITextField输入限制(中英文混合
- iOS UITextField 限制输入长度,中英文混排,汉字占2个长度,英文数字占1个长度
- UITextView & UITextField 实现中英文混合输入的限制
- 解决控件中中英文混合输入长度限制问题.
- 关于TextView限制长度的中英文混合输入
- UITextField ,UITextView 输入长度的限制
- 如何更好地限制一个UITextField的输入长度
- 如何限制UITextField 输入文字的长度?
- 限制UITextField输入长度
- UiTextField 限制输入长度
- UITextField输入长度限制
- 更好地限制一个UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度
- 限制 UITextField 输入的字符长度
- Edittext限制输入字符长度,解决中英文混用情况保证规定长度
- 如何更好地限制一个UITextField的输入长度
- 限制UITextField 输入文字的长度
- 完美限制UITextField的输入长度
- 如何更好地限制一个UITextField的输入长度