1. 添加监听方法
[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:(UIControlEventEditingChanged)];
2.监听方法:
- (void)textFieldDidChange:(UITextField *)textField
{
if(_maxLength <= 0){
return;
}
NSString *text = textField.text;
UITextRange *selectedRange = [textField markedTextRange];
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
//没有高亮选择的字,则对已输入的文字进行字数统计和限制,防止中文/emoj被截断
if (!position){
if (text.length > _maxLength){
NSRange rangeIndex = [text rangeOfComposedCharacterSequenceAtIndex:_maxLength];
if (rangeIndex.length == 1){
textField.text = [text substringToIndex:_maxLength];
}else{
if(_maxLength == 1){
textField.text = @"";
}else{
NSRange rangeRange = [text rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, _maxLength - 1 )];
textField.text = [text substringWithRange:rangeRange];
}
}
}
}
}