UITextView有时不会滚动

时间:2014-07-09 08:00:23

标签: ios objective-c uitextview uicollectionview uicollectionviewcell

输入UITextView时,有时会向下滚动到当前行案例a ),但其他时间不会(案例b'/强>)。

还有一个问题是:

相同的UITextView有时会显示其中的所有文字(案例1 ),但有时则不会显示最后一行文字(案例2 )。

每当案例1 发生案例时。 每当案例2 发生案例b 时。

这是视图的层次结构: enter image description here

使用UITextView

计算这些UICollectionViewCell以及sizeWithFont:constrainedToSize:lineBreakMode:的尺寸(可变高度固定宽度

高度限制设置为43到120.

如果高度> 43,则enableScrolling设置为YES,否则设置为NO逻辑X )。

textViewBeginEditing编辑时应用textViewEnded逻辑X 时启用滚动。

案例2 中没有滚动。

请提出原因和解决方法。

1 个答案:

答案 0 :(得分:0)

在iOS7上,我认为您可以在所有情况下将UITextView's scrollEnabled属性设置为YES。如果它包含较少的文本,它将不会滚动。如果在配置单元格时设置属性,则可能会出现这种奇怪的行为,因为UIKit正在重用这些单元格,可能还会重用UITextView

为了使最后一行可见,我猜你需要更准确地计算文本视图的大小。尝试使用attributedText设置文本,并使用您需要的所有格式。然后,为了计算尺寸,您可以这样做:

NSAttributedString *text = self.yourCellsTextView.attributedText;
UITextView *calculationView = [[UITextView alloc] init];
[calculationView setAttributedText:text];
CGSize size = [calculationView sizeThatFits:CGSizeMake(self.yourCellsTextView.frame.size.width, FLT_MAX)];
CGFloat finalMessageHeight = size.height;

希望这会有所帮助:)。