web-dev-qa-db-ja.com

サブビューでタップジェスチャを検出する方法

簡単な質問:タップジェスチャレコグナイザーが追加されたビューのサブビュー内にあるかどうかを検出するにはどうすればよいですか?例えば。タップジェスチャレコグナイザーが追加された背景にサブビューとして追加された正方形などのオブジェクトをクリックした場合、それがタップされたことを検出するにはどうすればよいですか?

14
Fitzy

_-locationInView:_を使用して、任意のビューに対応するハンドラーメソッドが呼び出されたときに、ジェスチャレコグナイザーからタップのポイントを取得できます。次に、UIViewで次のメソッドを使用します。- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)eventを使用して、渡したポイントがビューと同じ座標空間にあることを思い出して、タップされた実際のサブビューへの参照を取得します。

始めるためのいくつかのコード:

_CGPoint point = [tapGestureRecognizer locationInView:parentView];
UIView *tappedView = [parentView hitTest:point withEvent:nil];
_

ヒットテストを機能させるには、ビューでuserInteractionEnabledプロパティをYESに設定する必要があります。 UILabelsなどの多くのビューでは、これがデフォルトでNOに設定されています。したがって、上記の前に:

_self.subviewOfInterest.userInteractionEnabled = YES;
_
38
Brandon A

多分あなたは次のように設定する必要があります:subviews.userInteractionEnabled = YES;頑張ってください!

14
lu yuan

requireGestureRecognizerToFail:を使用して、サブビューのタップを認識することができます。 this コードを参照してください。

0
The iOSDev