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

时间:2014-01-16 09:35:38

标签: ios uiscrollview uitextview

我已在UITextView内成功实施了UITableViewCell。我已将UITextField放入单元格并指定了约束,因此文本视图始终位于单元格的顶部和底部10个点(因此,当单元格大小增加时,文本视图也会增加):< / p>

enter image description here

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

expandingTextViewCell.textView.textContainer.lineFragmentPadding = 0;
expandingTextViewCell.textView.textContainerInset = UIEdgeInsetsZero;

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

enter image description here

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

enter image description here

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

enter image description here

我很感激能够摆脱细胞/文本视图扩展时出现的差距。从用户的角度来看,我只希望文本视图向下扩展/展开,之前键入的文本保留在原始位置。

1 个答案:

答案 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
相关问题