ios中文字符最大长度的限制

2017-11-06  本文已影响0人  godot520

问题: 在使用拼音输入法输入中文时,如果限制字数,那么在输入最后几个中文字符时,常常会出现这样的现象。输入几个拼音字母就不能再输入了,导致不能完整地打出需要的汉字。
解决:

  1. — (BOOL)textField:(RCTTextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

方法添加
UITextRange *selectedRange = [_textField markedTextRange];
UITextPosition *position = [_textField positionFromPosition:selectedRange.start offset:0];
if (position) {
return YES;
}
说明、判断当前输入是否被选中,如果选中则说明当前输入无效,仅仅作为预输入是不需要计算到长度里的,可以继续显示输入的拼音字母

  1. —(void)textFieldDidChange
    方法添加
    UITextRange *selectedRange = [_textField markedTextRange];
    NSString * newText = [_textField textInRange:selectedRange]; //获取高亮部分

// 没有高亮选择的字,maxLength限制
if (newText.length > 0) {
return;
} else {
if (_maxLength && _textField.text.length>_maxLength.integerValue)
{
NSRange rangeIndex = [_textField.text rangeOfComposedCharacterSequenceAtIndex:_maxLength.integerValue];
if (rangeIndex.length == 1)
{
_textField.text = [_textField.text substringToIndex:_maxLength.integerValue];
}
else
{
NSRange rangeRange = [_textField.text rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, _maxLength.integerValue)];
_textField.text = [_textField.text substringWithRange:rangeRange];
}
}
}
说明、判断当前输入是否被选中,如果选中则说明当前输入无效不做处理,如果是正常输入则考虑是否需要截取。

上一篇下一篇

猜你喜欢

热点阅读