Mein Problem: Ich habe eine Übersicht EditView
, die im Grunde den gesamten Anwendungsrahmen einnimmt, und eine Unteransicht, MenuView
die nur die unteren ~ 20% MenuView
einnimmt und dann eine eigene Unteransicht enthält, ButtonView
die sich tatsächlich außerhalb der MenuView
Grenzen befindet (so etwas wie :) ButtonView.frame.origin.y = -100
.
(Hinweis: EditView
Enthält andere Unteransichten, die nicht Teil der MenuView
Ansichtshierarchie sind, aber die Antwort beeinflussen können.)
Sie kennen das Problem wahrscheinlich bereits: Wann ButtonView
innerhalb der Grenzen von MenuView
(oder genauer gesagt, wenn meine Berührungen innerhalb MenuView
der Grenzen liegen), ButtonView
reagiert auf Berührungsereignisse. Wenn meine Berührungen außerhalb der MenuView
Grenzen liegen (aber immer noch innerhalb ButtonView
der Grenzen), wird kein Berührungsereignis von empfangen ButtonView
.
Beispiel:
- (E) ist
EditView
das übergeordnete Element aller Ansichten - (M) ist
MenuView
eine Unteransicht von EditView - (B) ist
ButtonView
eine 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 MenuView
der 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!