输入UITextView
时,有时会向下滚动到当前行(案例a ),但其他时间不会(案例b'/强>)。
还有一个问题是:
相同的UITextView
有时会显示其中的所有文字(案例1 ),但有时则不会显示最后一行文字(案例2 )。
每当案例1 发生案例时。 每当案例2 发生案例b 时。
这是视图的层次结构:
使用UITextView
UICollectionViewCell
以及sizeWithFont:constrainedToSize:lineBreakMode:
的尺寸(可变高度固定宽度)
高度限制设置为43到120.
如果高度> 43,则enableScrolling设置为YES
,否则设置为NO
(逻辑X )。
在textViewBeginEditing
编辑时应用textViewEnded
和逻辑X 时启用滚动。
案例2 中没有滚动。
请提出原因和解决方法。
答案 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;
希望这会有所帮助:)。