Mon problème: j'ai un superview EditView
qui occupe essentiellement tout le cadre de l'application, et une sous-vue MenuView
qui ne prend que les ~ 20% inférieurs, puis MenuView
contient sa propre sous-vue ButtonView
qui réside en fait en dehors des limites de MenuView
's (quelque chose comme ceci :) ButtonView.frame.origin.y = -100
.
(Remarque: EditView
a d'autres sous-vues qui ne font pas partie de MenuView
la hiérarchie des vues de, mais peuvent affecter la réponse.)
Vous connaissez probablement déjà le problème: quand ButtonView
est dans les limites de MenuView
(ou, plus précisément, lorsque mes touches sont dans MenuView
les limites de), ButtonView
répond aux événements tactiles. Lorsque mes touches sont en dehors des limites de MenuView
's (mais toujours dans ButtonView
les limites de'), aucun événement tactile n'est reçu par 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 ||
|| ||
|+----------------------------+|
+------------------------------+
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 MenuView
la 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!