1

こんにちは、コンテンツに画像があるCALayerがあります。ここで、タップ ジェスチャを追加する必要があります。CALayer にタップを追加する例を教えてください。

これは私のコードです:

CALayer *imageLayer=[CALayer layer];
imageLayer.frame=frame;
imageLayer.cornerRadius=10.0;
imageLayer.borderWidth=2.0;
imageLayer.borderColor=[UIColor colorWithRed:0.957 green:0.957 blue:0.957 alpha:1].CGColor;
CALayer *imagecontent=[CALayer layer];
imagecontent.frame=CGRectMake(16, 26, 153, 153);
UIImage *image=[self.pageImages objectAtIndex:page];
imagecontent.contents=(id)image.CGImage;
imagecontent.masksToBounds = YES;   
[imageLayer addSublayer:imagecontent];
[self.scrollView.layer addSublayer:imageLayer];

ここで、「画像コンテンツ」のタップジェスチャーを追加してください。

4

2 に答える 2

1

ジェスチャ レコグナイザーをレイヤーに追加することはできないため、ジェスチャ レコグナイザーをそれを含むビューに追加してから、追加のテストを実行して、問題のレイヤーにタップが重なるかどうかを確認する必要があります。

レイヤーの親ビューにタップ ジェスチャ レコグナイザーを追加し (それが と呼ばれると仮定しましょうparentView)、次のコードをジェスチャ レコグナイザーのセレクターに追加します。

- (void)handleTap:(UITapGestureRecognizer *)sender {
    CGRect layerFrame = CGRectMake(16, 26, 153, 153);
    CGPoint tapPoint = [sender locationInView:parentView];
    if (CGRectContainsPoint(layerRect, tapPoint)) {
        // The tap happened inside the rectangle of your layer
        ...
    }
}
于 2012-08-08T13:58:58.257 に答える
0

また、CALayer で hitTest: を実行して、そのレイヤーをタップしているかどうかを確認することもできます。ヒットテストについては、アップルのドキュメントを確認してください。

于 2012-08-08T19:03:19.187 に答える