1

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

带有子层的 CATransformLayer

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

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

(顺便说一句,我看过这个问题,但觉得这个案例的不同足以保证一个新的帖子)

4

2 回答 2

1

托管所有图层的根视图正在获取图层树的所有内容

在那里你必须做

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

来自评论:如果您想在动画期间检查,请询问您的表示层:

CALayer *touchedLayer = [self.rootLayer.presentationLayer hitTest:touches.anyObject.locationInWindow];
于 2012-11-29T16:23:05.153 回答
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];

    }


}
于 2012-11-30T10:11:16.580 回答