2

ここでは、ボタンタップでボタンアクションイベントのタッチを取得したい-B

画像が(画像の表示領域で)タップされると、タップジェスチャメソッドが呼び出されます

しかし、問題は画像がボタン上にあり、ボタンの一部を覆っているということです。その覆われた部分でボタンアクションイベントを実行したいのです-A

私は試しましたが、覆われた部分でボタンアクションを取得できませんでした:(

画像マスキング

4

4 に答える 4

3

その部分に透明なボタンを置きます

アップデート

 -(void)singleTapImageview:(UITapGestureRecognizer *)gesture
 {
    NSLog(@"single-tap");
    CGPoint touchLocation = [gesture locationInView:self.imageViewParent];
    float x = touchLocation.x;
    float y = touchLocation.y;

    //Using gesture recogniser you can get the current position of touch

    UIImage* image = imageViewParent.image;
    CFDataRef data = CGDataProviderCopyData(CGImageGetDataProvider(image.CGImage));
    UInt8 *pixels = (UInt8 *)CFDataGetBytePtr(data);

    UIGraphicsBeginImageContext(image.size);
    [image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
    CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 1);
    CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [UIColor redColor].CGColor);
    int index = ((x + (y * (int)image.size.width)) * 4) + 3;
    CGFloat alpha = pixels[index];
    if (alpha == 0)
    {
        // call button acton
    }

}

于 2013-02-04T13:02:03.243 に答える
0

画像部分と既存のボタンの両方に重なる新しい透明なボタンを追加して、フレームを作成できます

CGRectMake(button.frame.origin.x, button.frame.origin.y, button.frame.size.width, button.frame.size.height);

于 2013-02-04T13:07:19.763 に答える
0

そのようにボタンを画像と重ねないようにしてください。ひどいですね。

より長期的な解決策として、UXデザイナーやグラフィックアーティストと友達になることをお勧めします。運が良ければ、それは同じ人かもしれません。

于 2013-02-04T13:15:21.297 に答える
0

重なり合うボタンのヒットテスト関数を作成することで、問題を解決できます。

ヒットテストでは、座標をチェックして、どのボタンがヒットしたかを判断する必要があります。

http://developer.apple.com/library/ios/documentation/uikit/reference/uiview_class/uiview/uiview.html#//apple_ref/occ/instm/UIView/hitTest:withEvent

于 2013-02-04T13:30:10.213 に答える