1

別のビュー (ビュー A) の上に配置されたビュー (ビュー B としましょう) があります。ビューBの外でタッチタップが発生したときにアニメーションを作成したいと思います。

これまでのところ、タップタッチ ジェスチャ レコグナイザをビュー A にアタッチしました。問題は、ビュー A がビュー B で発生したタップ イベントに対しても (ビュー A とオーバーラップしているときに) インターセプトしていることです。

UITapGestureRecognizer * recognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(animateViewB)];
recognizer.delegate = self;
[self.viewA addGestureRecognizer:recognizer];

ビュー B 内をクリックしたときに、タップ イベントがビュー A に送信されないようにするにはどうすればよいですか? ビュー B に対するイベントの位置を確認し、イベントがその中にあることを検出した場合。すべてのイベントがビュー B に転送されるようにするにはどうすればよいですか?

4

1 に答える 1

0

viewB に触れていたにもかかわらず、viewA がインタラクションを取得していた理由は、UIImageViews がネイティブにユーザーインタラクションを無効にしているためです。

UIImageView でのやり取りを傍受したい場合は、次のように設定する必要があります。

imageView.userInteractionEnabled = YES;

ジェスチャ レコグナイザーをビューに追加すると、そのビューだけが特定のレコグナイザーを使用します。

ユーザー操作が有効になっている最上位のビュー (つまり、一番上にあるビュー) は、タッチまたはジェスチャを受け取ります。ユーザー操作が無効になっているビューは、タッチまたはジェスチャー イベントを受け取りません。

ビュー階層の理解を深めるために、以下をお読みください: iOS 向けビュー プログラミング ガイド

于 2012-05-04T21:34:26.083 に答える