我有一个使用OwnerDrawnElement创建的自定义单元格,其中包含可自动调整大小的UITextView。 当文本改变时,应该有适当的布局重绘和单元格高度重新计算。 问题是如何保持键盘打开。 UITableView中有一个方法 - ReloadRows实际上以某种方式帮助了我。 我不能把它称为我的细胞,因为它是第一个响应者,我不能不能让它辞职。 但是当我把它称为另一个单元格时,我的单元格会根据需要调整大小,但我没有必要重新绘制另一个单元格。 所以我想知道什么方法被调用来重新传输UITableView NOT重载数据?! 当您向上和向下滚动,单元格变得可见并且重新计算高度时,可能会调用相同的方法。
我已经尝试过标准的SetNeedsDisplay(),SetNeedsLayout(),ReloadInputViews(),LayoutSubviews(),但它没有做同样的事情。也许我需要以不同的方式使用它们。我试图将它们称为单元格和整个tableview对象。
我查看了ReloadRows方法,发现它调用了一些API:
Messaging.void_objc_msgSendSuper_IntPtr_int(base.SuperHandle,UITableView.selReloadRowsAtIndexPathsWithRowAnimation_,nSArray.Handle,(int)withRowAnimation);
因此,没有哪种方法强制tableview重新计算每个单元格的高度而不重新加载数据。
你能帮帮我吗?
答案 0 :(得分:5)
尝试更新单元格帧,然后调用UITableView的空更新块:
tableView.BeginUpdates();
tableView.EndUpdates();