UITextView 设置行高 并限制字数 并在键盘遮挡时向上移动

2023-05-16

//首先添加监听

    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)

                                                name:@"UITextViewTextDidChangeNotification"

                                              object:self.contentTextView];

//监听处理

-(void)textFiledEditChanged:(NSNotification *)obj{

      UITextView * textView = (UITextView *)obj.object;

    NSString *toBeString = textView.text;

    UITextRange *selectedRange = [textView markedTextRange];

    //获取高亮部分

    UITextPosition *position = [textView positionFromPosition:selectedRange.start offset:0];

    // 没有高亮选择的字,则对已输入的文字进行字数统计和限制

    if (!position) {

        //限制最大字数

        NSInteger realLength = toBeString.length;

        if (realLength > 100) {

            toBeString = [toBeString substringToIndex:100];

        }

        //textview 改变字体的行间距

        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];

        paragraphStyle.lineSpacing = 37*WidthBL;// 字体的行间距

        NSDictionary *attributes = @{

            NSFontAttributeName:[UIFont systemFontOfSize:14*WidthBL],// 字体的大小

            NSParagraphStyleAttributeName:paragraphStyle

        };

        textView.attributedText = [[NSAttributedString alloc] initWithString:toBeString attributes:attributes];

    }

    // 有高亮选择的字符串,则暂不对文字进行统计和限制

    else{    }

      //计算当前文本高度并让View向上移动

    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];

    [paragraphStyle setLineSpacing:37*WidthBL];

    CGFloat H = [textView.text boundingRectWithSize:CGSizeMake(textView.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{

        NSParagraphStyleAttributeName:paragraphStyle,

        NSFontAttributeName:textView.font,

    } context:nil].size.height;

        if (H>170) {

        self.view.transform = CGAffineTransformMakeTranslation(0, 170-H);

    }

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UITextView 设置行高 并限制字数 并在键盘遮挡时向上移动 的相关文章

随机推荐