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

一、复现步骤

复制文本:

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

粘贴文本:

粘贴在作为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在粘贴大段文本时的显示问题)