iphone – 如何在CALayer上获取触摸事件?

我是iPhone SDK的新手。现在我正在用CALayers进行编程,我真的非常喜欢 – 不如UIViews那么贵,而且比OpenGL ES精灵少了许多代码。

我有这个问题:可以在CALayer上获得触摸事件吗?我了解如何在UIView上获得触摸事件

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

但是我没有找到任何关于如何在CALayer对象上获取触摸事件的地方,例如在3D空间中浮动的橙色正方形。我拒绝相信我是唯一一个好奇的人。

我感谢任何帮助!

好 – 回答我自己的问题!假设您在视图控制器的主图层中有一堆CALayers,并且您希望当您触摸它们时,它们会转到不透明度0.5。在您的视图控制器类的.m文件中实现此代码:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    if ([touches count] == 1) {
        for (UITouch *touch in touches) {
            CGPoint point = [touch locationInView:[touch view]];
            point = [[touch view] convertPoint:point toView:nil];

            CALayer *layer = [(CALayer *)self.view.layer.presentationLayer hitTest:point];

            layer = layer.modelLayer;
            layer.opacity = 0.5;
        }
    }
}
http://stackoverflow.com/questions/573372/how-to-get-touch-event-on-a-calayer

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:iphone – 如何在CALayer上获取触摸事件?