UITextView在滚动之前不会显示

时间:2011-10-12 10:30:14

标签: iphone ios ipad uiscrollview uitextview

我正在使用UITextView来显示xml中的文字。我解析了xml并将文本存储在NSArray中,然后我将其添加到UITextview 1}}在我的代码中。

问题: 当我运行代码时,textview显示为空或部分文本,当我尝试滚动textview时,整个文本都会显示出来。

我将UITextview添加到UIView

我发现它很奇怪,谷歌搜索它但找不到很多帮助我的答案。 有人可以回复我解决问题

TNQ

8 个答案:

答案 0 :(得分:10)

找到一个简单的解决方案

有同样的问题。当您将文本放入不可见的UITextView时,它不会绘制文本。

我将UITextView关闭屏幕,然后将其设置为动画:

    [UIView animateWithDuration:0.3 delay:0.0 options:UIViewAnimationCurveEaseOut animations:^{
    self.contentView.center = CGPointMake(self.contentView.center.x + move * (self.contentView.frame.size.width /2), self.contentView.center.y);
    self.textView.frame = self.textView.frame; // <<<--- ADD THIS LINE
    } completion:^(BOOL finished) {
    if (finished) {
    }
}];

当你重新设置textview的框架时,它会重新绘制它的文本。因此,您需要做的就是在UITextView出现在屏幕上之前添加我在上面标记的行。

干杯

答案 1 :(得分:5)

UITextView继承自UIScrollView,因此只需滚动它即可。

[detailsTextView setContentOffset:CGPointMake(0, 1) animated:YES];

答案 2 :(得分:1)

我通过清除textview并将文本再次添加到textview来解决了这个问题,我不知道确切的基础,但我的问题已经解决了。 在我的情况下: 我正在点击按钮将文本视图的框架从外部更改为视图。单击按钮时,textview不显示内容,并在滚动时显示。

我通过删除textview中的文本并在单击按钮时重新输入文本来解决。

答案 3 :(得分:0)

UItextView继承自UIScrollView。这意味着它具有滚动功能。因此,如果UITextView的内容足够小以适合其框架,则无需滚动。

但是,如果它足够大,则需要滚动UITextView

这有意义吗?

有关详细信息,请参阅UITextView

的课程参考

答案 4 :(得分:0)

确保你设置textview文本的方法被正确调用。你分配给文本视图的字符串是正确的字符串格式(如果不是这样的话,保留它)。

答案 5 :(得分:0)

在实际文本之前,空格和/或换行符可能存在。在将这些字符分配给文本视图之前修剪它们。

NSCharacterSet *charset = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *text = [parsedString stringByTrimmingCharactersInSet:charset];
textview.text = text;

答案 6 :(得分:0)

请在加载textView时尝试

NSAttributedString *oldtext = objTextView.attributedText;
[objTextView removeFromSuperview];
objTextView.attributedText = oldtext;
[self.view addSubview:objTextView];

就我而言,我的文字归于

答案 7 :(得分:0)

当您完成解析XML的操作时,您确保在主线程上发生了更新吗?

UIKit仅在主线程上进行更新,因此所做的任何更新只会在您下次触摸对象并强制更新时显示。

作为正确执行此操作的一种方法的示例。

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{

   [self parseXMLOffMainThread];

   dispatch_async(dispatch_get_main_queue(), ^{

      self.myTextView.text = parsedText;

      });        

 });