// 备注名字长度
#define kRemarkNanmeLens 10
1.addTarget 和 设置代理
[self.textField addTarget:self action:@selector(textFieldEditChanged:) forControlEvents:UIControlEventEditingChanged];
self.textField.delegate = self;
2. 实现代理方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
// location 限制键盘的输入
if (range.location >= kRemarkNanmeLens) {
[textField unmarkText];
textField.text = [textField.text substringToIndex:kRemarkNanmeLens];
return NO;
}else{
return YES;
}
}
3.实现target方法
- (void)textFieldEditChanged:(UITextField *)textField{
NSArray *currentar = [UITextInputMode activeInputModes];
UITextInputMode *current = [currentar firstObject];
if ([current.primaryLanguage isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写
//获mark的文字
UITextRange *selectedRange = [textField markedTextRange];
// 没有高亮选择的字,则对已输入的文字进行字数统计和限制
if (!selectedRange) {
if (textField.text.length > kRemarkNanmeLens) {
textField.text = [textField.text substringToIndex:kRemarkNanmeLens];
}
}else{
// 有高亮选择的字符串,则暂不对文字进行统计和限制
if (textField.text.length > kRemarkNanmeLens) {
// 取消选中的文字
[textField unmarkText];
textField.text = [textField.text substringToIndex:kRemarkNanmeLens];
}
}
}else{
// 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况
if (textField.text.length > kRemarkNanmeLens) {
textField.text = [textField.text substringToIndex:kRemarkNanmeLens];
}
}
}