1

CATransformLayer を使用して一連のレイヤーを作成し、それらを 3D 視点でアニメーション化して立方体を作成しています (このようなもの)。

サブレイヤーを持つ CATransformLayer

この立方体の側面の 1 つに UIButton を追加する最良の方法は何ですか? イベントを受け取り、IBOutlet からボタンにアクセスできるようにしたいと考えています。

XIB 内にボタンを含む UIView を作成し、そのレイヤーを CATransformLayer に挿入しようとしましたが、表示されますが、ボタンをクリックできません。これは、UIKit が Touch/events 側を処理するためであり、レイヤーは描画を行うためだけにあると感じています。

(ところで、私はこの質問を見ましたが、このケースは新しい投稿を正当化するのに十分異なると感じています)

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 に答える