UIGestureRecognizersを使用しているときに、どの子ビューでイベントが発生したかを知るにはどうすればよいですか?
ドキュメントによると:
ジェスチャーレコグナイザーは、特定のビューとそのビューのすべてのサブビューに対してヒットテストされたタッチで動作します。
私が見る限り、「view」プロパティは
ジェスチャ認識エンジンが接続されているビュー。
これが親ビューになります。
これにより、イベントの場所で最も内側の子孫ビューが見つかります。 (その子ビューにインタラクティブな内部プライベート孫がある場合、このコードもそれらを見つけます。)
UIView* view = gestureRecognizer.view;
CGPoint loc = [gestureRecognizer locationInView:view];
UIView* subview = [view hitTest:loc withEvent:nil];
In Swift 2:
let view = gestureRecognizer.view
let loc = gestureRecognizer.locationInView(view)
let subview = view?.hitTest(loc, withEvent: nil) // note: it is a `UIView?`
In Swift 3:
let view = gestureRecognizer.view
let loc = gestureRecognizer.location(in: view)
let subview = view?.hitTest(loc, with: nil) // note: it is a `UIView?`