Mon problème: j'ai un superview EditViewqui occupe essentiellement tout le cadre de l'application, et une sous-vue MenuViewqui ne prend que les ~ 20% inférieurs, puis MenuViewcontient sa propre sous-vue ButtonViewqui réside en fait en dehors des limites de MenuView's (quelque chose comme ceci :) ButtonView.frame.origin.y = -100.
(Remarque: EditViewa d'autres sous-vues qui ne font pas partie de MenuViewla hiérarchie des vues de, mais peuvent affecter la réponse.)
Vous connaissez probablement déjà le problème: quand ButtonViewest dans les limites de MenuView(ou, plus précisément, lorsque mes touches sont dans MenuViewles limites de), ButtonViewrépond aux événements tactiles. Lorsque mes touches sont en dehors des limites de MenuView's (mais toujours dans ButtonViewles limites de'), aucun événement tactile n'est reçu par ButtonView.
Exemple:
- (E) est
EditViewle parent de toutes les vues - (M) est
MenuViewune sous-vue de EditView - (B) est
ButtonViewune sous-vue de MenuView
Diagramme:
+------------------------------+
|E |
| |
| |
| |
| |
|+-----+ |
||B | |
|+-----+ |
|+----------------------------+|
||M ||
|| ||
|+----------------------------+|
+------------------------------+
Parce que (B) est en dehors du cadre de (M), un tap dans la région (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: je hitTest:withEvent:crois comprendre que le dépassement peut résoudre ce problème, mais je ne comprends pas exactement comment. Dans mon cas, doit-il hitTest:withEvent:être remplacé dans EditView(mon superview «maître»)? Ou devrait-il être remplacé dans MenuViewla vue directe du bouton qui ne reçoit pas de touches? Ou est-ce que je pense mal à cela?
Si cela nécessite une longue explication, une bonne ressource en ligne serait utile - à l'exception des documents UIView d'Apple, qui ne m'ont pas été clairs.
Merci!