2013-03-14 12 views
26

Wie deaktiviere ich die Benutzerinteraktion auf eine gesamte Map (MKMapView) in iOS? Ich möchte nur Zoomen, Antippen usw. deaktivieren und eine statische Karte anzeigen. [self.mapView setUserInteractionEnabled:NO] hat nicht funktioniert. Fanden keine funktionierenden Lösungen über Google oder andere Antworten hier auf Stack (bitte Link, wenn Sie eine funktionierende Antwort finden ..). Targeting iOS 5. Es sollte einen einfacheren Weg geben, dies zu tun.Wie kann ich die Benutzerinteraktion in MKMapView deaktivieren?

+0

FYI, ich habe das versucht und die App wurde abgelehnt, weil sie nicht interaktiv war. Ich habe MKMapView nicht verwendet, daher kann ich deine Frage nicht beantworten. –

+0

@SteveMallory Sollte nicht in nur einem Anwendungsfall abgelehnt werden, denke ich. Andere Apps machen es. Werfen Sie einen Blick auf foursquare: In einem Anwendungsfall (Shop Detail View) ist die Karte fast vollständig gesperrt, was sinnvoll ist, da der Content-Kontext ein einzelner Shop ist. – sean

+0

Aus meiner Erfahrung heraus funktioniert es nicht, wenn es im Interface Builder ausgewählt wird, indem das Häkchen bei "Benutzerinteraktion aktiviert" für die Kartenansicht entfernt wird. Die Einstellung nach Code funktionierte jedoch für mich. –

Antwort

59

Der Schlüssel sein sollte, ist zu deaktivieren, zoomt und blättert, wie zum Beispiel:

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

Ok, diese Antwort funktionierte für mich zum größten Teil. Taps kommen immer noch durch, aber das unterbricht meinen Anwendungsfall nicht und Benutzer können nicht scrollen oder zoomen, also bin ich glücklich. Vielen Dank! – sean

+0

Damit konnte ich die beiden Fingerdreh- und -neigungsgesten verwenden, um den zentralen Brennpunkt vollständig außer Sichtweite zu verschieben, obwohl es ziemlich mühsam war. – SandWyrm

+0

Was ist der Punkt der Deaktivierung der Benutzerinteraktion, wenn Sie es immer noch in Code tun müssen ...? – Mgamerz

0

Sie können die Eigenschaft enabled von MKAnnotationView auf NO

Für Zoom Deaktivieren Sie mapView.zoomEnabled = FALSE;

Ein boolescher Wert, der angibt aktiviert können festlegen, ob die Anmerkung aktiviert ist.

@property (nonatomic, getter=isEnabled) BOOL enabled 

Diskussion

Der Standardwert dieser Eigenschaft ist JA. Wenn der Wert dieser Eigenschaft NEIN ist, ignoriert die Anmerkungsansicht Berührungsereignisse und kann nicht ausgewählt werden. Unterklassen können den Annotationsinhalt abhängig vom Wert dieser Eigenschaft auch anders anzeigen.

+0

Ich verstehe nicht, wie dies gilt, um die Interaktion mit der gesamten Karte zu deaktivieren. Ich möchte nicht, dass der Benutzer irgendwo in der gesamten Map interagieren kann - in diesem speziellen Anwendungsfall. – sean

1

Wie wäre es mit diesem kleinen Hack! nur Platz UIView auf der MKMapView mit den gleichen Rahmen Details. Beachten Sie auch, dass die backgroundColor dieser Ansicht clearColor

+0

wird dadurch die Schaltfläche [legal] der Kartenansicht nicht anklickbar? wird Apfel so? – DeyaEldeen

17

Sie können dies wie folgt in Interface Builder tun:

Like this

Verwandte Themen