Ich habe eine iOS App mit benutzerdefinierten Anmerkungen.Tippen Sie auf eine MKAnnotationView, um sie auszublenden und ihre Callouts auszublenden.
- Ich möchte einmal eine MKAnnotationView erschließen können, um zu zeigen, es ist callout (funktioniert)
- und dann möchte ich die MKAnnotationView ein zweites Mal tippen Sie auf die Kommentierung und verstecken die Legende für das, um die Auswahl Annotation (funktioniert in iOS5 aber nicht iOS6).
Ich verstehe, dass didSelectAnnotationView nur für die erste Auswahl einer Anmerkung aufgerufen werden soll. ([1]: Selecting a MapView Annotation Twice ), und basierend auf diesem Artikel und anderen, die ich gelesen habe ([2]: ios mapkit closing annotation callouts by tapping the map), sieht es aus wie ein zusätzliches Tippen auf eine MKAnnotationView erkennen, nachdem es einen UITapGestureRecognizer erfordert.
Also, ich benutze einen UITapGestureRecognizer und ich erkenne richtig Tappings auf meine Anmerkungsansichten, wenn sie bereits ausgewählt sind, und ich DeselectAnnotation aufrufen, wenn ich den Tap erkennen und ich verstecke/De-Auswahl die Callout/Annotation jeweils. Es funktioniert gut in iOS5, aber es funktioniert nur halb in iOS6
In iOS6 die tap Geste Gestenerkennung aufgerufen wird, und ich rufe meinen Code zum Ausblenden der Legende und die Auswahl der Annotation und alles ist in Ordnung, aber dann die selectAnnotationView-Methode Irgendwie wird mein Callout wieder angezeigt und meine Annotation wird erneut ausgewählt.
Was ich davon ausgehe ist, dass unmittelbar nachdem ich meine Annotation-Ansicht in meiner TAP-Geste-Erkennung deaktiviert habe, das Tap-Ereignis noch aktiv ist, das mapView das Berührungsereignis erkennt und selectAnnotationView aufruft, und so das Anmerkung, dass ich nur abgewählt wird jetzt wieder ausgewählt.
Ich habe keine Ahnung, warum es nur in iOS6 passiert, aber ich hoffe auf Anregungen zu anderen Ideen für den Umgang mit meinem gewünschten Verhalten.
können Sie Code anzeigen entfernen? – james075