在不使用reloadData的情况下实时调整UITableViewCell的大小?

时间:2012-09-04 15:52:59

标签: iphone uitableview uitextview resignfirstresponder

首先,如果答案已经存在,请原谅我(老实说,我已经工作并且搜索了大约两周)。

现在,情况:

我有一个UITextView作为UITableViewCellUITableView的子视图。 UITextView是第一个响应者(当用户正在键入时)。

我设置了(通过委托协议方法),以便在每个键入的字符之后,重新计算单元格的rowHeight(正确地并且在rowView的tableViews委托协议中)。到目前为止一切都很好。

然后,我希望重新加载(或刷新,无论术语可能是什么)没有将其子视图UITextView作为第一响应者进行重新加载。

解决问题的一个不令人满意的解决方案:

我可以使用[tableView reloadData]然后[textView becomeFirstResponder]模拟这个(这样用户甚至不会注意到textView被重新加载)并且rowHeight是完美的,但这已经给我带来了很多问题(尤其是每次用户输入一个字符并且由于textView辞职而强制执行其建议时,确保光标没有跳到最后)。

有没有办法重绘或调整UITableViewCell(以动态更改其rowHeight)而不会导致其任何子视图作为第一响应者辞职?

1 个答案:

答案 0 :(得分:18)

使用tableView的[tableView beginUpdates][tableView endUpdates]将解决此问题。有关详细信息,请参阅this answer