如何使CALayer可点击?

时间:2012-11-29 16:12:11

标签: ios uibutton core-animation calayer catransformlayer

我正在使用CATransformLayer来创建一堆图层并使用3D透视图为它们设置动画来制作一个立方体(类似这样)

CATransformLayer with sublayers

将UIButton添加到此多维数据集的一侧的最佳方法是什么?我希望能够从IBOutlet接收事件并访问该按钮。

我尝试使用里面的按钮创建一个UIView进入我的XIB并将其图层插入到CATransformLayer中,它显示但按钮不可点击。我有一种感觉,这是因为UIKit处理触摸/事件方面的事情,图层只是在那里进行绘图。

(顺便说一下,我见过this question,但觉得这个案子不同,足以保证一个新帖子)

2 个答案:

答案 0 :(得分:1)

托管所有图层的根视图将获得图层树的所有触摸

在那里你必须做

CALayer *touchedLayer = [self.rootLayer hitTest:touches.anyObject.locationInWindow];
评论中的

:如果你想在动画期间检查你的表现层:

CALayer *touchedLayer = [self.rootLayer.presentationLayer hitTest:touches.anyObject.locationInWindow];

答案 1 :(得分:0)

感谢Daij提示,这是我的解决方案 - 感谢任何评论/改进

- (IBAction)viewTapped:(UITapGestureRecognizer *)sender
{
    CGPoint location = [sender locationInView:sender.view];
    CALayer *layer = [sender.view.layer hitTest:location];

    BOOL contains = [self.btnPlay.layer.sublayers containsObject:layer];
    if(contains)
    {
        [self.btnPlay sendActionsForControlEvents:UIControlEventTouchUpInside];

    }


}