web-dev-qa-db-ja.com

uiimageviewで認識されないタップジェスチャ

2つのuiimageviewsを追加し、1つを別のsubview uiviewimageview1,imageview2)。最初のビューでは、上部のuiimageviewは非表示です(imageview2)2番目のビューでは、下のimageviewは非表示です(imageview1)。

タップジェスチャの割り当て:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneTap:)];
UITapGestureRecognizer *singleTap1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneTap:)];

両方のuiimageviewのユーザーインタラクションをYESに設定します。

[singleTap setNumberOfTapsRequired:1];
[singleTap1 setNumberOfTapsRequired:1];

// uiimageviewにジェスチャーを追加

タップジェスチャレコグナイザーとセレクターをそれぞれ追加します。

[imageview1 addGestureRecognizer:singleTap];
[imageview2 addGestureRecognizer:singleTap1];

しかし、私のタップは認識されません。

誰が間違いがどこにあるか教えてもらえますか?

29
user2706770

ジェスチャ認識エンジンを追加する前に、setUserInteractionEnabled:YESを設定してみてください。

[imageview1 setUserInteractionEnabled:YES]
[imageview2 setUserInteractionEnabled:YES]

[imageview1 addGestureRecognizer:singleTap];
[imageview2 addGestureRecognizer:singleTap1];   

更新:

コメントを行った後、タップイベントを検出する前にビューを一番上に表示することをお勧めします。親imageViewは上にあり、これらのタップをキャッチするためです。

[yourparentview bringSubviewToFront:imageview1];
[yourparentview bringSubviewToFront:imageview2];
109
User 1531343
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneTap:)];
singleTap.numberOfTapsRequired = 1;
singleTap.numberOfTouchesRequired = 1;
singleTap.delegate = self;
[imageview1 addGestureRecogniser:singleTap];
[singleTap1 release];

imageview1.userInteractionEnabled = YES; //disabled by default
2
n00bProgrammer