UITextView没有显示长文本

时间:2014-07-15 21:00:39

标签: ios objective-c uitableview uitextview

我的iOS应用未显示长属性字符串。我在tableview中有一个包含此textView的单元格。当文本很长时,tableview暂时没有响应,但是当它加载时,文本没有显示。所有其他单元格显示正常。 textView可以很好地处理小文本字符串。

以下是代码:

            descriptionCell = [tableView dequeueReusableCellWithIdentifier:@"CellAdDetailDescription"];
            descriptionCell.bodyTextView.delegate = self;
            NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:self.ad.body];

            UIFont *cellFont;
            cellFont = [UIFont fontWithName:@"HelveticaNeue" size:16.0];

            NSDictionary *attributesDictionary;
            NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
            paragraphStyle.lineSpacing = 10;

            attributesDictionary = @{NSParagraphStyleAttributeName : paragraphStyle , NSFontAttributeName: cellFont};

            [str addAttributes:attributesDictionary range:NSMakeRange(0, str.length)];
            descriptionCell.bodyTextView.attributedText = str;

我粘贴了长字符串here。我调试了str正在加载包含所需文本。

这里有什么不对? UITextView中允许的最大字符串长度是多少?

编辑:很奇怪,在textView中尝试选择时,文本显示在放大镜中。我发布了一段视频here

这是UITextView中的错误吗?

这是截图。底部的空白是textView。 here is the screenshot

3 个答案:

答案 0 :(得分:8)

它可能与滚动有关。如果要显示所有文本(即文本视图扩展到需要的高度,表视图单元格也是如此),则滚动操作由表视图完成。如果文本视图较小,则必须滚动才能看到所有文本 - 这可能会导致与表视图冲突,这也是滚动视图。

有人建议您在添加属性文本之前禁用文本视图的滚动,然后再重新启用它。如果要在表视图中显示整个文本,则可以禁用文本视图滚动。在某些情况下,它仅在启用滚动时才有效。您也应该检查这种可能性。

答案 1 :(得分:5)

我也有这个问题(=非常长的归属文本没有显示在自动化UITableViewCell中的UITextView中)。我从这里和这个问题尝试了所有接受的答案:UITextView not loading/showing the large text?。没有人工作。

但是我发现 - 在我的情况下 - 它在设备上运行正常。因此,如果您仍在努力解决此类问题,请不要依赖iOS模拟器。

答案 2 :(得分:0)

你UITextView没有显示所有文本的原因是因为它太小,所以它会截断文本以适应它的框架。你可以按照步骤显示所有文字:

  • 在CustomUITableCell中,覆盖layoutSubView:

使用此功能计算适合其内容的TextView的大小 [textView sizeThatFits:CGSizeMake(textView.frame.size.width,CGFLOAT_MAX)]。height

之后,计算并设置TExtView的新框架(在uitableCell自定义中)

  • 在tableView:heightForCellAtIndexPath中,计算与上面类似的textView的新大小(也是单元格的高度),并为单元格返回正确的高度。