我已在UITextView
内成功实施了UITableViewCell
。我已将UITextField
放入单元格并指定了约束,因此文本视图始终位于单元格的顶部和底部10个点(因此,当单元格大小增加时,文本视图也会增加):< / p>
我还包含以下代码(似乎是推荐的iOS 7方式)从文本视图中删除所有内容插入和填充:
expandingTextViewCell.textView.textContainer.lineFragmentPadding = 0;
expandingTextViewCell.textView.textContainerInset = UIEdgeInsetsZero;
所有单元格高度都存储在一个数组中,-tableView:heightForRowAtIndexPath:
查询。
我已在-textViewDidChange:
方法中实现了相关代码,以检查已在文本视图中输入的新文本,重新计算高度,更新数组,然后调用[tableView beginUpdates]
和[tableView endUpdates]
动画细胞高度的变化。这一切都有效,文本视图也会调整大小(由于定义的约束):
但是,我无法解决一个问题。当输入足够的文本以导致单元格(和文本视图)展开时,文本视图似乎向上滚动 - 这会切断文本的第一行,并在文本视图的底部创建一个间隙:
您可以在上面的屏幕截图中看到问题。但是,如果我手动将文本视图滚动回到它的正确位置,那么一切都显示正常,我无法向下滚动文本视图以再次获得差距,这个差距现在已经消失:
我很感激能够摆脱细胞/文本视图扩展时出现的差距。从用户的角度来看,我只希望文本视图向下扩展/展开,之前键入的文本保留在原始位置。
答案 0 :(得分:5)
我知道这个问题已经过时了,但iOS 10中仍存在同样的问题。
对类似问题的回答很有帮助:https://stackoverflow.com/a/42480403/7604418
您可以向UITextView添加类别以禁用内容偏移动画,并修复额外的底部偏移:
@implementation UITextView (Scroll)
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated {
[super setContentOffset:contentOffset animated:NO];
}
@end