如何检测CALayer的绘制内容是否包含触摸点?

时间:2012-02-08 13:10:22

标签: iphone ios ipad touch calayer

UIView添加了三个图层。一层绘制一个矩形。一个画一个圆圈。一个绘制多边形。图层的不透明度是否定的。当我触摸多边形时,我想获得绘制多边形的正确图层。并且三层充满了视图。我实现了这个。但我不知道我们是否有更好的解决方案来解决它。我的方式是这样的: 1.使用-drawLayer:inContext绘制内容。存储您使用的CGPath。 2.在UIView的-touchedEnded:withEvent方法中。使用CGPathContainsPoint()来检测CGPath是否包含触摸点。

也许这是解决这个问题的愚蠢方法。谁能告诉我如何更好地解决它?

1 个答案:

答案 0 :(得分:1)

如果您需要针对路径进行准确的命中测试,我担心如果您的路径位于您的路径中,则必须自行检查/迭代图层层次结构。{/ p>}

在迭代时,您可以通过跳过点在帧外的图层来优化它。

对于不太精细的控制,您可以使用CGPathContainsPoint s

获取触摸的图层
CALayer

方法

如果您的图层层次结构具有嵌套级别< 1000(几乎总是如此)我不会太担心。