iOS - UITextView不绘制文字?

时间:2011-08-16 20:36:46

标签: iphone objective-c ios uiview uitextview

我在屏幕上有一个UITextView。 这个UITextView由UIView覆盖。

当我为这个UITextView设置文本时,如果textView不可见(UIView覆盖它),它就不会绘制文本。

因此,当我删除覆盖textView的视图时,textView中没有文本。如果我尝试滚动文本视图,文本会突然出现。

任何强制UITextView始终绘制文本的方法? (只有当我的文本太多(大约1000个字符)时才会发生这种情况)

我在设置'text'之前和之后尝试调用[textView setNeedsDisplay]并且它没有解决问题

5 个答案:

答案 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Đỗ相同而不改变框架...仍然看起来很难看。