Jak można wyłączyć interakcję użytkownika z całą mapą (MKMapView) w systemie iOS? Chcę wyłączyć powiększanie, stukanie itp. I wyświetlać statyczną mapę. [self.mapView setUserInteractionEnabled:NO]
nie działa. Nie znaleziono żadnych działających rozwiązań za pośrednictwem Google ani innych odpowiedzi tutaj na stosie (link pls, jeśli znajdziesz działającą odpowiedź ..). Kierowanie na iOS 5. Powinien istnieć łatwiejszy sposób na zrobienie tego.Jak wyłączyć interakcje użytkownika z MKMapView?
Odpowiedz
Najważniejsze jest, aby wyłączyć zoomy i przewijany, takie jak:
self.mapView.zoomEnabled = false;
self.mapView.scrollEnabled = false;
self.mapView.userInteractionEnabled = false;
OK ta odpowiedź zadziałała dla mnie, w przeważającej części. Kliknięcia wciąż się przedostają, ale to nie niszczy mojego przypadku użycia, a użytkownicy nie mogą przewijać ani powiększać, więc jestem szczęśliwy. Dzięki! – sean
Korzystając z tego, nadal mogłem korzystać z gestów obracania i pochylania dwoma palcami, aby przesunąć centralny punkt ogniskowy całkowicie poza pole widzenia, chociaż było to dość uciążliwe. – SandWyrm
Jaki jest sens wyłączania interakcji użytkownika, jeśli nadal musisz robić to w kodzie ...? – Mgamerz
Można ustawić włączoną właściwość MKAnnotationView na NO
Aby wyłączyć zoom można ustawić mapView.zoomEnabled = FALSE;
włączona
Wartość logiczna wskazująca, czy adnotacja jest włączone.
@property (nonatomic, getter=isEnabled) BOOL enabled
Dyskusja
Domyślna wartość tej właściwości jest TAK. Jeśli wartością tej właściwości jest NIE, widok adnotacji ignoruje zdarzenia dotyku i nie można go wybrać. Podklasy mogą również wyświetlać zawartość adnotacji w różny sposób w zależności od wartości tej właściwości.
Nie rozumiem, w jaki sposób ma to zastosowanie, aby wyłączyć interakcję z całą mapą. Nie chcę, aby użytkownik mógł działać w dowolnym miejscu na całej mapie - w tym konkretnym przypadku użycia. – sean
Co powiesz na ten mały hack! po prostu umieść UIView
na wierzchu MKMapView
, mając wszystkie szczegóły tej samej ramki. Należy również pamiętać, że backgroundColor
tego względu powinny być clearColor
spowoduje to, że przycisk [prawny] w widoku mapy nie będzie klikalny? będzie tak jabłko? – DeyaEldeen
Można to zrobić w konstruktorze Interface tak:
FYI, próbowałem tego, a aplikacja została odrzucona, ponieważ nie jest interaktywna. Nie korzystałem z MKMapView, więc nie mogę odpowiedzieć na twoje pytanie. –
@SteveMallory Nie powinienem być odrzucony za zrobienie tego tylko w jednym przypadku użycia. Robią to inne aplikacje. Spójrz na foursquare: w jednym przypadku (Shop Detail View) mapa jest prawie zablokowana, co ma sens, ponieważ kontekst treści jest jednym sklepem. – sean
Z mojego doświadczenia - nie działa po wybraniu w konstruktorze interfejsów przez usunięcie znacznika "Włączona interakcja użytkownika" dla widoku mapy. Jednak ustawienie go za pomocą kodu zadziałało dla mnie. –