是)我有的:
一个带有单元格的 UITableView。这个单元格有一个 UITextView 作为子视图。所有委托和数据源均已正确设置。单元格高度是从 heightForRow 等正确获取的。用户在 textView 中输入文本。
我正在尝试做的事情:
我希望单元格在用户键入时更新其高度,而不将 textView 作为第一响应者。stackOverflow 上的许多帖子都说空的 beginUpdates/endUpdates 对此有效。
我尝试了什么:
1- 我在 textViewDidChange 中调用了 beginUpdates 和 endUpdates(针对 tableView)。没啥事儿。(注意:所有代表都设置正确)。
2-我什至在 textViewDidEndEditing 中调用 beginUpdates 和 endUpdates 只是为了确保(以查看它在 textView 辞去第一响应者后是否有效)。它可以工作(当 textView 辞去 firstResponder 时,单元格会调整大小)。
3-然后我尝试在 textViewDidChange 中重新加载数据。它可以工作,除了它将 textView 作为第一响应者(键盘在每个键入的字符上消失)。
4-然后我尝试了 reloadData 然后直接告诉 textView 再次成为FirstResponder (以保持键盘向上)。它可以工作,但这会导致 textView 中的光标位置、自动更正和退格出现许多问题。
5-然后我尝试了 reloadData,然后在我希望键盘保持向上时在 textViewShouldEndEditing 中返回 NO,但由于某种原因,单元格不会更新其高度。
6- 最后,我尝试了 reloadRowsAtIndexPaths 等,然后在 textViewShouldEndEditing 中返回 NO,但它给了我一个错误,说它无法删除拒绝 resignFirstResponder 的对象。
我还尝试了 textViewDidChange 中的 reloadInputViews 和 setNeedsDisplay 和 setNeedsLayout 等方法,但没有任何反应。
我的问题:
在我看来,#2 表明一个单元格不能更新它的高度,而它的一个子视图是一个 firstResponder。是这样吗?有没有这方面的文件(我找不到)?
为什么 beginUpdates/EndUpdates 不起作用?是否存在不起作用的已知或常见情况?我设置的方式可能有问题吗?但是调整大小与#3 和#4 完美配合(表明我所有的委托方法等都设置正确)。
很抱歉这个很长的问题,但是除了我发布的那些之外,任何人都可以给出任何想法吗?我有一种感觉,我错过了一些非常愚蠢和明显的事情(像往常一样)......
顺便说一句,我同时使用 iOS 模拟器和 5.1 的实际 iPhone