【发布时间】:2011-11-24 15:51:10
【问题描述】:
情况:需要找到用户触摸了哪一层。
问题:Apple 说我们应该使用 [CALayer presentationLayer] 进行命中测试,以便它代表当时屏幕上的实际内容(它捕获动画中间的信息等)。
...除了:presentationLayer 不返回原始图层,它返回它们的副本...所以:hitTest 将返回一个与原始图层不等效的全新 CALayer 实例。
我们如何找到实际命中的 CALayer?
例如
CALayer* x = [CALayer layer];
CALayer* y = [CALayer layer];
[self.view.layer addSublayer: x];
[self.view.layer addSublayer: y];
...
CALayer* touchedLayer = [self.view.layer.presentationLayer hitTest:touchPoint];
...但是,是触摸层“x”,还是“y”?
if( touchedLayer == x ) // this won't work, because touchedLayer is - by definition from Apple - a new object
【问题讨论】: