我有一个非常复杂的UITableViewCell
子类,我在Instruments
中发现[super layoutSubviews]
调用在滚动表视图时消耗了5%的运行时间。所以我尝试省略[super layoutSubviews]
调用,因为我自己布局了所有子视图。它确实给了我性能提升。但是,我发现如果没有[super layoutSubviews]
调用,按钮等交互式子视图就不再接收触摸事件。
所以我的问题是如何在[super layoutSubviews]
子类中省略UITableViewCell
调用以获得性能提升而不会将触摸事件传递到子视图?
答案 0 :(得分:0)
您是否尝试枚举子视图并将userInteractionEnabled设置为YES?仍然是一种黑客,但如果真的是唯一缺少的东西,它应该有效。
祝你好运,达明
答案 1 :(得分:0)
最后跟踪了它。这是因为cell.contentView.frame
是(0,0,320,44)而没有调用[super layoutSubviews]
并且边界不够大(具体地说,高度44不够高)以包围所有交互式子视图。根据{{1}}的文件:
接收器范围之外的点永远不会被报告为 点击,即使他们实际上位于接收者的子视图之一。 如果当前视图的clipsToBounds属性设置为,则会发生这种情况 NO和受影响的子视图超出了视图的范围。
这就是确切的情况。