Mam aplikację na iOS z niestandardowymi adnotacjami.Wybierz MKAnnotationView, aby usunąć zaznaczenie i ukryć jego objaśnienie.
- Chcę być w stanie dopasować się MKAnnotationView raz, aby pokazać, że to objaśnienie (działa poprawnie)
- a następnie chcę, by wykorzystać MKAnnotationView drugi raz, aby usunąć zaznaczenie adnotacji i ukryć objaśnienia za to adnotacja (działa w systemie iOS5, ale nie w systemie iOS6).
Rozumiem, że didSelectAnnotationView ma być tylko wywoływany do początkowego wyboru adnotacji. ([1]: Selecting a MapView Annotation Twice ) i na podstawie tego artykułu i innych artykułów, które przeczytałem ([2]: ios mapkit closing annotation callouts by tapping the map), wygląda na to, że wykrycie dodatkowego kliknięcia na MKAnnotationView po wybraniu wymaga UITapGestureRecognizer.
Używam narzędzia UITapGestureRecognizer i prawidłowo wykrywam dodatkowe kliknięcia w widokach adnotacji, gdy są one już wybrane, a następnie wywołuję opcję odznaczeniaAnnotacja, gdy rozpoznam kran i ukrywam/usuwam zaznaczenie odpowiednio objaśnienie/adnotacja. Działa świetnie w systemie iOS5, ale działa tylko w połowie iOS6
W iOS6 jest uruchamiany program do rozpoznawania gestów i wywołuję mój kod, aby ukryć objaśnienie i anulować wybór adnotacji i wszystko jest w porządku, ale potem metoda selectAnnotationView zostaje wywołany, więc moje objaśnienie pojawia się ponownie i moja adnotacja zostaje ponownie wybrana.
To, co zakładam, że się dzieje, polega na tym, że natychmiast po usunięciu zaznaczenia widoku adnotacji w moim czytniku gestów dotykowych, zdarzenie tap jest nadal aktywne, mapView wykrywa zdarzenie dotykowe i wywołuje selectAnnotationView, a więc adnotacja, że de-selected została właśnie wybrana ponownie.
Nie mam pojęcia, dlaczego tak się dzieje tylko w iOS6, ale mam nadzieję, że będę mógł przedstawić wszelkie inne pomysły dotyczące postępowania z pożądanym zachowaniem.
można pokazać kod? – james075