美文网首页
UITextView在粘贴大段文本时的显示问题

UITextView在粘贴大段文本时的显示问题

作者: 晒太阳的仙人掌是个程序媛 | 来源:发表于2020-11-06 14:46 被阅读0次

    一、复现步骤

    复制文本:

    碧云天,黄叶地,秋色连波,波上寒烟翠。
    山映斜阳天接水,芳草无情,更在斜阳外。
    黯乡魂,追旅思。夜夜除非,好梦留人睡。
    明月楼高休独倚,酒入愁肠,化作相思泪

    粘贴文本:

    粘贴在作为IM当中输入框的UITextView当中,粘贴后显示有问题,图如下:


    IMG_0041.jpg

    监听了一下UITextView的代理方法,发现粘贴大量文本时,UITextView当中的contentSize没有及时的跟随UITextView的Height的变化而变化。一般情况下,只在第一次粘贴大量文本的时候会出现该问题,随便在UITextView当中输入写什么,再粘贴其实是不会再出现该问题的,一度怀疑是UITextView的系统bug。

    二、使用版本

    0、手机系统版本:

    * iOS12.4.8
    

    1、xcode版本:

    * Version 12.1 (12A7403)
    

    2、UITextView的初始化

    - (UITextView *)textView {
        if (_textView == nil) {
            _textView = [[UITextView alloc] init];
            _textView.layer.cornerRadius = 4;
            _textView.layer.masksToBounds = YES;
            _textView.font = [UIFont systemFontOfSize:18];
            _textView.dataDetectorTypes = UIDataDetectorTypeAll;
            _textView.returnKeyType = UIReturnKeySend;
            _textView.showsVerticalScrollIndicator = NO;
            _textView.showsHorizontalScrollIndicator = NO;
            _textView.textContainerInset = UIEdgeInsetsMake(6, 0, 6, 0);
            _textView.layoutManager.delegate = self;
            _textView.textContainer.heightTracksTextView = YES;
        }
        return _textView;
    }
    

    以上操作必现该bug。

    三、解决办法

    网上查了很多资料,也有很多人遇到该问题,也有很多奇奇怪怪的解决办法,最终一行代码解决该问题,就是在TextView初始化当中,去掉_textView.textContainer.heightTracksTextView = YES;即可。

    相关文章

      网友评论

          本文标题:UITextView在粘贴大段文本时的显示问题

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