2013-03-14 16 views
26

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?

+0

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. –

+0

@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

+0

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. –

Odpowiedz

59

Najważniejsze jest, aby wyłączyć zoomy i przewijany, takie jak:

self.mapView.zoomEnabled = false; 
self.mapView.scrollEnabled = false; 
self.mapView.userInteractionEnabled = false; 
+1

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

+0

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

+0

Jaki jest sens wyłączania interakcji użytkownika, jeśli nadal musisz robić to w kodzie ...? – Mgamerz

0

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.

+0

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

1

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

+0

spowoduje to, że przycisk [prawny] w widoku mapy nie będzie klikalny? będzie tak jabłko? – DeyaEldeen

17

Można to zrobić w konstruktorze Interface tak:

Like this