在CAShapeLayer中有hitTest:(CGPoint)吗?

时间:2010-12-16 14:13:18

标签: iphone ipad calayer

我在视图中有多个CAShapeLayers并且我想拖动它。(形状不规则)请提供一些建议。

1 个答案:

答案 0 :(得分:0)

CALayer及其子类不是响应者链的一部分,它们不会从UIResponder下降。因此,永远不会在任何touchesBegan:withEvent:子类上调用CALayer等。您需要检测图层层次结构中某个托管UIView上的触摸。然后,在触摸处理程序中使用hitTest:来检测触摸了哪个图层。

如果您创建一个UIView子类,并将CAShapeLayer作为其支持层,则会更容易:

@implementation MyShapeView

- (CALayer *)layerClass {
  return [CAShapeLayer class];
}

@end

然后,将自定义视图的实例作为子视图添加到主视图中。之后,您可以使用UIResponder方法,或者更好的是使用UIGestureRecognizer来处理拖动。如果您可以定位iOS 3.2或更高版本,我强烈建议您使用手势识别器。它们使事件处理变得更加简单。