Mein Problem: Ich habe eine Übersicht EditView, die im Grunde den gesamten Anwendungsrahmen einnimmt, und eine Unteransicht, MenuViewdie nur die unteren ~ 20% MenuVieweinnimmt und dann eine eigene Unteransicht enthält, ButtonViewdie sich tatsächlich außerhalb der MenuViewGrenzen befindet (so etwas wie :) ButtonView.frame.origin.y = -100.
(Hinweis: EditViewEnthält andere Unteransichten, die nicht Teil der MenuViewAnsichtshierarchie sind, aber die Antwort beeinflussen können.)
Sie kennen das Problem wahrscheinlich bereits: Wann ButtonViewinnerhalb der Grenzen von MenuView(oder genauer gesagt, wenn meine Berührungen innerhalb MenuViewder Grenzen liegen), ButtonViewreagiert auf Berührungsereignisse. Wenn meine Berührungen außerhalb der MenuViewGrenzen liegen (aber immer noch innerhalb ButtonViewder Grenzen), wird kein Berührungsereignis von empfangen ButtonView.
Beispiel:
- (E) ist
EditViewdas übergeordnete Element aller Ansichten - (M) ist
MenuVieweine Unteransicht von EditView - (B) ist
ButtonVieweine Unteransicht von MenuView
Diagramm:
+------------------------------+
|E |
| |
| |
| |
| |
|+-----+ |
||B | |
|+-----+ |
|+----------------------------+|
||M ||
|| ||
|+----------------------------+|
+------------------------------+
Da sich (B) außerhalb des Rahmens von (M) befindet, wird niemals ein Tippen in der Region (B) an (M) gesendet. Tatsächlich analysiert (M) in diesem Fall niemals die Berührung, und die Berührung wird an gesendet das nächste Objekt in der Hierarchie.
Ziel: Ich hitTest:withEvent:verstehe , dass das Überschreiben dieses Problem lösen kann, aber ich verstehe nicht genau, wie. Sollte in meinem Fall hitTest:withEvent:in EditView(meine 'Master'-Übersicht) überschrieben werden? Oder sollte es in MenuViewder direkten Übersicht über die Schaltfläche, die keine Berührungen erhält , überschrieben werden ? Oder denke ich falsch darüber nach?
Wenn dies eine ausführliche Erklärung erfordert, wäre eine gute Online-Ressource hilfreich - mit Ausnahme der UIView-Dokumente von Apple, die es mir nicht klar gemacht haben.
Vielen Dank!