Mon problème : J'ai une vue supérieure EditView
qui occupe pratiquement tout le cadre de l'application, et une sous-vue MenuView
qui n'occupe que les ~20% du bas, et ensuite MenuView
contient sa propre sous-vue ButtonView
qui réside en fait en dehors de MenuView
(quelque chose comme ceci : ButtonView.frame.origin.y = -100
).
(note : EditView
possède d'autres sous-vues qui ne font pas partie de l'ensemble de l'UE. MenuView
de la hiérarchie des vues, mais peut affecter la réponse).
Vous connaissez probablement déjà le problème : lorsque ButtonView
est dans les limites de MenuView
(ou, plus précisément, lorsque mes touches sont à l'intérieur de MenuView
), ButtonView
réagit aux événements liés au toucher. Lorsque mes touchers sont en dehors de MenuView
(mais toujours dans les limites de la ButtonView
), aucun événement de contact n'est reçu par l'utilisateur. ButtonView
.
Exemple :
- (E) est
EditView
le parent de toutes les vues - (M) est
MenuView
une sous-vue de EditView - (B) est
ButtonView
une sous-vue de MenuView
Diagramme :
+------------------------------+
|E |
| |
| |
| |
| |
|+-----+ |
||B | |
|+-----+ |
|+----------------------------+|
||M ||
|| ||
|+----------------------------+|
+------------------------------+
Comme (B) est en dehors du cadre de (M), un toucher dans la région de (B) ne sera jamais envoyé à (M) - en fait, (M) n'analyse jamais le toucher dans ce cas, et le toucher est envoyé à l'objet suivant dans la hiérarchie.
Objectif : J'en déduis que le fait d'outrepasser hitTest:withEvent:
peut résoudre ce problème, mais je ne comprends pas exactement comment. Dans mon cas, faut-il hitTest:withEvent:
être remplacée dans EditView
(ma vue supérieure "maître") ? Ou doit-elle être surchargée dans MenuView
la vue supérieure directe du bouton qui ne reçoit pas de touches ? Ou est-ce que je ne vois pas les choses de la bonne façon ?
Si cela nécessite une longue explication, une bonne ressource en ligne serait utile - à l'exception des documents UIView d'Apple, qui n'ont pas été clairs pour moi.
Gracias.