我在屏幕上有一个UITextView。 这个UITextView由UIView覆盖。
当我为这个UITextView设置文本时,如果textView不可见(UIView覆盖它),它就不会绘制文本。
因此,当我删除覆盖textView的视图时,textView中没有文本。如果我尝试滚动文本视图,文本会突然出现。
任何强制UITextView始终绘制文本的方法? (只有当我的文本太多(大约1000个字符)时才会发生这种情况)
我在设置'text'之前和之后尝试调用[textView setNeedsDisplay]
并且它没有解决问题
答案 0 :(得分:4)
我有同样的问题,我的UITextView在我尝试滚动它或它的父级之前不会绘制文本。 [textView setNeedsDisplay]对我不起作用。最后,我增加了textView 1px,问题就消失了。
CGRect frame = textView.frame;
frame.size.height += 1;
textView.frame = frame;
我知道这种方法很难看,但确实有用。
答案 1 :(得分:1)
隐藏时系统中的大多数内容都不会显示,这会浪费资源。
正确的方法是在UITextView上调用setNeedsDisplay:它已被取消隐藏,然后它应该绘制immediatley。
答案 2 :(得分:0)
UITextView
中字符数限制似乎相对较低(see the post here)。
我发布的链接中的海报建议将您的内容放入UIWebView
,这样可以处理大量文字。
答案 3 :(得分:0)
同样的问题。我们在隐藏或屏幕外配置了文本视图并将其放入视图中。最有可能的原因是Apple优化了UITextView
,因此它不会进行布局和绘图,除非它在屏幕上并且可见。
由于优化,调用setNeedsDisplay
不起作用。 setNeedsDisplay
经常被调用,所以想象一下UITextView
经常做布局和绘图吗?因此上面的解决方案是丑陋但有效:向帧添加一个像素,这将触发UITextView
重新布局和重绘。我们选择了这个解决方案。
答案 4 :(得分:0)
由于UITextView是UIScrollView的子类,我做了类似的事情:
CGPoint offset = self.textView.contentOffset;
offset.y++;
[self.textView setContentOffset:offset];
offset.y--;
[self.textView setContentOffset:offset];
与@TùngĐỗ相同而不改变框架...仍然看起来很难看。