web-dev-qa-db-fra.com

Rechercher la vue enfant qui a été tapée lors de l'utilisation de UITapGestureRecognizer

Comment savoir sur laquelle des vues enfant un événement s'est produit lors de l'utilisation de UIGestureRecognizers?

Selon la documentation:

Un outil de reconnaissance des gestes fonctionne sur les touches testées pour une vue spécifique et toutes les sous-vues de cette vue.

Pour autant que je puisse voir, la propriété "view" est

La vue à laquelle le reconnaisseur de gestes est attaché.

qui sera la vue parent.

67
LK.

Vous trouverez ainsi la vue descendante la plus profonde sur le lieu de l'événement. (Notez que si cette vue enfant a des petits-enfants privés internes interactifs, ce code les trouvera également.)

UIView* view = gestureRecognizer.view;
CGPoint loc = [gestureRecognizer locationInView:view];
UIView* subview = [view hitTest:loc withEvent:nil];

Dans Swift 2:

let view = gestureRecognizer.view
let loc = gestureRecognizer.locationInView(view)
let subview = view?.hitTest(loc, withEvent: nil) // note: it is a `UIView?`

Dans Swift 3:

let view = gestureRecognizer.view
let loc = gestureRecognizer.location(in: view)
let subview = view?.hitTest(loc, with: nil) // note: it is a `UIView?`
187
kennytm