iOS UiTextView限制输入字数的方法

pragma mark - textView代理方法

  • (BOOL)textView:(UITextView )textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString )text{
    if ([text isEqualToString:@”\n”]) {
    [textView resignFirstResponder];//按回车取消第一相应者
    return NO;
    }
    return YES;
    }

  • (BOOL)textViewShouldBeginEditing:(UITextView *)textView
    {
    提示Label.hidden = YES;//开始编辑时
    return YES;
    }

  • (BOOL)textViewShouldEndEditing:(UITextView *)textView
    {//将要停止编辑(不是第一响应者时)
    if (textView.text.length == 0) {
    提示Label.hidden = NO;;
    }
    return YES;
    }

  • (void)textViewDidChange:(UITextView *)textView
    {
    UITextRange *selectedRange = [textView markedTextRange];
    //获取高亮部分
    UITextPosition *pos = [textView positionFromPosition:selectedRange.start offset:0];

    //如果在变化中是高亮部分在变,就不要计算字符了
    if (selectedRange && pos) {
    return;
    }

    NSUInteger count = textView.text.length;

    if (count > MAXVALUE) {

    NSRange rangeIndex = [textView.text rangeOfComposedCharacterSequenceAtIndex:MAXVALUE];
    if (rangeIndex.length == 1)
    {
        textView.text = [textView.text  substringToIndex:MAXVALUE];
    }
    else
    {
        NSRange rangeRange = [textView.text rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAXVALUE)];
        textView.text = [textView.text  substringWithRange:rangeRange];
    }
    [showMessage showWaring:[NSString stringWithFormat:@"字数不能多于%d个字", MAXVALUE]];
    _numberLabel.text = [NSString stringWithFormat:@"%ld/%ld", (long)MAXVALUE, (long)MAXVALUE];
    

    }
    else {
    _numberLabel.text = [NSString stringWithFormat:@”%ld/%ld”, (unsigned long)count, (long)MAXVALUE];
    }

}

猜你喜欢

转载自blog.csdn.net/xj_love/article/details/70213388