// 备注名字长度 #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]; } } }