一、复现步骤
复制文本:
碧云天,黄叶地,秋色连波,波上寒烟翠。
山映斜阳天接水,芳草无情,更在斜阳外。
黯乡魂,追旅思。夜夜除非,好梦留人睡。
明月楼高休独倚,酒入愁肠,化作相思泪
粘贴文本:
粘贴在作为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;
即可。
网友评论