在 UITableViewCell 中扩展 UITextView 在底部留下间隙
Posted
技术标签:
【中文标题】在 UITableViewCell 中扩展 UITextView 在底部留下间隙【英文标题】:Expanding UITextView in UITableViewCell leaves gap at bottom 【发布时间】:2014-01-16 09:35:37 【问题描述】:我已经在UITableViewCell
中成功实现了UITextView
。我已将UITextField
放入单元格并指定约束,以便文本视图始终距离单元格的顶部和底部 10 个点(因此,当单元格大小增加时,文本视图也会增加):
我还包含以下代码(这似乎是推荐的 ios 7 方式)以从文本视图中删除所有内容插入和填充:
expandingTextViewCell.textView.textContainer.lineFragmentPadding = 0;
expandingTextViewCell.textView.textContainerInset = UIEdgeInsetsZero;
所有单元格高度都存储在一个数组中,-tableView:heightForRowAtIndexPath:
会查询该数组。
我已经在-textViewDidChange:
方法中实现了相关代码,以检查已输入到文本视图中的新文本,重新计算高度,更新数组,然后调用[tableView beginUpdates]
和[tableView endUpdates]
以动画化单元格中的更改高度。这一切都有效,并且文本视图也会调整大小(由于定义的约束):
但是,有一个问题我一直无法解决。当输入足够多的文本导致单元格(和文本视图)扩展时,文本视图会向上滚动 - 这会切断第一行文本,并且还会在文本视图的底部创建一个间隙:
您可以在上面的屏幕截图中看到问题。但是,如果我手动将文本视图滚动回正确的位置,那么一切都显示正常,并且我无法向下滚动文本视图以再次获得间隙,该间隙现在已经消失:
如果单元格/文本视图扩展时出现的空白,我将不胜感激。从用户的角度来看,我只希望文本视图向下增长/扩展,而先前键入的文本仍保留在其原始位置。
【问题讨论】:
【参考方案1】:我知道这个问题很老了,但同样的问题在 iOS 10 中仍然存在。
对类似问题的回答很有帮助:https://***.com/a/42480403/7604418
您可以向 UITextView 添加一个类别来禁用内容偏移动画,并修复额外的底部偏移:
@implementation UITextView (Scroll)
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
[super setContentOffset:contentOffset animated:NO];
@end
【讨论】:
以上是关于在 UITableViewCell 中扩展 UITextView 在底部留下间隙的主要内容,如果未能解决你的问题,请参考以下文章
仅为 UITableViewCell 的一部分调用 didSelectRowAtIndexPath
保存 UITableviewcell accessoryView 的状态