在UITableViewCell中扩展UITextView会在底部留下空白

Sko*_*ota 2 uiscrollview uitextview ios

我已成功实现了UITextView一个UITableViewCell.我已经放入UITextField单元格并指定了约束,因此文本视图总是距离单元格的顶部和底部10个点(因此,当单元格大小增加时,文本视图也会增加):

在此输入图像描述

我还包括以下代码(似乎是推荐的iOS 7方式)从文本视图中删除所有内容插入和填充:

expandingTextViewCell.textView.textContainer.lineFragmentPadding = 0;
expandingTextViewCell.textView.textContainerInset = UIEdgeInsetsZero;
Run Code Online (Sandbox Code Playgroud)

所有单元格高度都存储在一个-tableView:heightForRowAtIndexPath:查询数组中.我已经在-textViewDidChange:方法中实现了相关代码,以检查已在文本视图中键入的新文本,重新计算高度,更新数组,然后调用[tableView beginUpdates][tableView endUpdates]设置单元格高度更改的动画.这一切都有效,文本视图也调整大小(由于定义的约束):

在此输入图像描述

但是,我无法解决一个问题.当输入足够的文本以导致单元格(和文本视图)展开时,文本视图似乎向上滚动 - 这会切断文本的第一行,并在文本视图的底部创建一个间隙:

在此输入图像描述

您可以在上面的屏幕截图中看到问题.但是,如果我手动将文本视图滚动回到它的正确位置,那么一切都显示正常,我无法向下滚动文本视图以再次获得差距,这个差距现在已经消失:

在此输入图像描述

我将不胜感激任何帮助摆脱细胞/文本视图扩展时出现的差距.从用户的角度来看,我只希望文本视图向下扩展/展开,之前键入的文本保留在原始位置.

Lve*_*ode 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
Run Code Online (Sandbox Code Playgroud)