美文网首页
ios中文字符最大长度的限制

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

作者: godot520 | 来源:发表于2017-11-06 15:56 被阅读0次

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

    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];
    }
    }
    }
    说明、判断当前输入是否被选中,如果选中则说明当前输入无效不做处理,如果是正常输入则考虑是否需要截取。

    相关文章

      网友评论

          本文标题:ios中文字符最大长度的限制

          本文链接:https://www.haomeiwen.com/subject/elulmxtx.html