簡単な質問:タップジェスチャレコグナイザーが追加されたビューのサブビュー内にあるかどうかを検出するにはどうすればよいですか?例えば。タップジェスチャレコグナイザーが追加された背景にサブビューとして追加された正方形などのオブジェクトをクリックした場合、それがタップされたことを検出するにはどうすればよいですか?
_-locationInView:
_を使用して、任意のビューに対応するハンドラーメソッドが呼び出されたときに、ジェスチャレコグナイザーからタップのポイントを取得できます。次に、UIViewで次のメソッドを使用します。- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
を使用して、渡したポイントがビューと同じ座標空間にあることを思い出して、タップされた実際のサブビューへの参照を取得します。
始めるためのいくつかのコード:
_CGPoint point = [tapGestureRecognizer locationInView:parentView];
UIView *tappedView = [parentView hitTest:point withEvent:nil];
_
ヒットテストを機能させるには、ビューでuserInteractionEnabled
プロパティをYES
に設定する必要があります。 UILabel
sなどの多くのビューでは、これがデフォルトでNO
に設定されています。したがって、上記の前に:
_self.subviewOfInterest.userInteractionEnabled = YES;
_
多分あなたは次のように設定する必要があります:subviews.userInteractionEnabled = YES;頑張ってください!
requireGestureRecognizerToFail:
を使用して、サブビューのタップを認識することができます。 this コードを参照してください。