Z Bestellung und das Touch-Handling-System sind getrennt. Z Bestellung ist nur für die visuelle Layout Ihrer Schichten. Das Touch-Handling-System hängt jedoch von der Priorität ab, die Ihnen zugewiesen wird, wenn Sie sich beim Touch-Dispatcher registrieren. Wenn Sie zwei Ebenen mit dem Touch-Dispatcher registrieren, die dieselbe Priorität haben, erhält die zweite Ebene die Berührungen zuerst, unabhängig von der Z-Reihenfolge der Ebenen.
Hier ist der Teil, der mich wirklich verwirrt, als ich das gleiche Problem hatte. Während Z Order höhere Zahlen optisch übereinander legt, ist es bei Berührungen genau das Gegenteil. LOWER-Priority-Nummern erhalten zuerst die Berührungen. Um meine eigene Gesundheit zu bewahren, habe ich meinen Code so umgestaltet, dass ich, wann immer möglich, Layer in der gleichen Reihenfolge wie der Z-Index hinzufügte, sodass sich die Berührungen der obersten Layer intuitiv verhalten würden.
Wenn dies nicht möglich ist, verwende ich das Touch-Prioritätssystem, und ich Konstanten definieren, so dass ich später nicht verwirrt.Zur Anmeldung für berührt das Prioritätssystem, verwenden Sie die folgenden Schritte aus:
-(void) registerWithTouchDispatcher {
[[TouchDispatcher sharedDispatcher] addTargetedDelegate:self priority: DEFAULT_TOUCH_PRIORITY swallowsTouches:YES];
}
eigentlich: niedrigere Priorität wird die Berührung zuerst bekommen. 0 ist auch nicht der niedrigste, Sie können unter 0 gehen. Um Ihre Z-Reihenfolge für die Priorität zu verwenden, nehmen Sie einfach die Z-Reihenfolge * -1 als Priorität und die "höchste" Z-Reihenfolge wird die Berührung zuerst erhalten. – nash