Ios UITableView中非常高的单元格导致滚动性能非常慢

Ios UITableView中非常高的单元格导致滚动性能非常慢,ios,uitableview,Ios,Uitableview,我有一个很高的牢房,里面有大量的文本内容。显示其高度为7000+。当在该单元格中滚动时(它太高了,需要一段时间),tableView的滚动性能特别差 在时间分析器之后,请单击tableView滚动。它显示了成本最高的子视图之一的drawRect:方法。该子视图是第三方自定义的。我将drawRect:方法作为回溯断点,如下所示: 结果是,在非常高的单元格中滚动时,会多次调用drawRect:。那么,是什么原因导致在一个单元格内滚动时调用drawRect:。快速查看链接的自定义内容,它看起来像-s

我有一个很高的牢房,里面有大量的文本内容。显示其高度为7000+。当在该单元格中滚动时(它太高了,需要一段时间),tableView的滚动性能特别差

在时间分析器之后,请单击tableView滚动。它显示了成本最高的子视图之一的
drawRect:
方法。该子视图是第三方自定义的。我将
drawRect:
方法作为回溯断点,如下所示:


结果是,在非常高的单元格中滚动时,会多次调用
drawRect:
。那么,是什么原因导致在一个单元格内滚动时调用
drawRect:

快速查看链接的自定义内容,它看起来像
-setNeedsDisplayInRect:
在设置文本视图框或边界以及触摸事件时被调用


看起来罪魁祸首是
UIResponder
touch方法,在这种情况下,将
SETextView
上的
userInteractionEnabled
设置为
NO
应该可以解决问题。当然,您可能希望在文本视图上启用交互,但我相信您可以想出一些办法

检查cell reuseIdentifier的实现是否正常工作。如果不重用单元格,滚动时性能会非常慢,因为为表的每一行创建了新单元格。选中的单元格将被重用如果可能,请提供单元格代码的实现快速查看链接的自定义文本视图,无论何时设置文本视图
边界
以及触摸事件,都会调用
-setNeedsDisplayInRect:
。在您的情况下,我会在
-[SETextView setNeedsDisplayInRect:
中设置一个断点,并查看堆栈跟踪,以找出在滚动时调用它的位置。让我知道你发现了什么@斯蒂芬:你说得对!触发
drawRect:
的是
setNeedsDisplayInRect:
触控相关方法。请添加一个我将标记为接受的答案。我选择删除setneedsdisplayinrect。答案太多了