我在视图中有多个CAShapeLayers并且我想拖动它。(形状不规则)请提供一些建议。
答案 0 :(得分:0)
CALayer
及其子类不是响应者链的一部分,它们不会从UIResponder
下降。因此,永远不会在任何touchesBegan:withEvent:
子类上调用CALayer
等。您需要检测图层层次结构中某个托管UIView
上的触摸。然后,在触摸处理程序中使用hitTest:
来检测触摸了哪个图层。
如果您创建一个UIView
子类,并将CAShapeLayer
作为其支持层,则会更容易:
@implementation MyShapeView
- (CALayer *)layerClass {
return [CAShapeLayer class];
}
@end
然后,将自定义视图的实例作为子视图添加到主视图中。之后,您可以使用UIResponder
方法,或者更好的是使用UIGestureRecognizer
来处理拖动。如果您可以定位iOS 3.2或更高版本,我强烈建议您使用手势识别器。它们使事件处理变得更加简单。