Ich bin immer ziemlich frustriert mit den Einschränkungen von MKMapKit. Mein aktuelles Problem hat mit der z-Ordnung der Beschriftungsansichten zu tun, vor allem, da es auf Berührungen bezieht. Wenn Sie den Standard-Z-Auftrag an der MapKit gibt Ihnen:
- Die Reihenfolge erscheint zufällig. Die z-Reihenfolge ist unabhängig von der Reihenfolge, die Anmerkungen hinzugefügt wurden.
- Wenn eine Anmerkung oben auf einen Treffer endet, die obere Anmerkung zu berühren bringt im Allgemeinen die Legende für die untere Anmerkung oben. Es scheint, wie der Treffererfassungs nicht einmal die Zeichnungsreihenfolge einhalten. Was ist damit?
Ich habe versucht, # Lösung 1 im Web gefunden, etwas ähnlich dem folgenden Code (das entworfen wurde, eine gewisse Kontrolle über Z-Reihenfolge zu geben)
- (void) mapView: (MKMapView *) mapView didAddAnnotationViews: (NSArray *) Ansichten {
für (MKAnnotationView * annView in Aussicht) {
TopBottomAnnotation ann * = (TopBottomAnnotation *) [annView Annotation];
if ([ann top]) {
[[AnnView Super] bringSubviewToFront: annView];
} Else {
[[AnnView Super] sendSubviewToBack: annView];
}
}
}
Laufen durch die Beschriftungsansichten weitergegeben mapView: didAddAnnotationViews: und ihre Z-Reihenfolge Einstellung scheint # 1 zu beheben. Das Problem ist, dass jetzt die callout Ansichten sind nicht mehr immer oben auf die Beschriftungsansichten. Die MapKit scheint über die Schichten sehr verwirrt zu bekommen (Callouts in einer Ebene über alle Beschriftungsansichten gezeichnet werden soll). Ich kann sogar herausfinden, wie es ist verwirrt, da alle MKAnnotationViews Sie haben die gleiche Superview erhalten (eine private Klasse MKOverlayView). Sie würden denken, jedes vernünftiges Design die Legenden über diese Überlagerungsansicht ziehen würde.
Hat jemand # 1 oder # 2 erfolgreich gelöst?













