2013-03-14 12 views
26

Come si disabilita l'interazione dell'utente con un'intera mappa (MKMapView) in iOS? Voglio solo disabilitare lo zoom, toccare, ecc. E mostrare una mappa statica. [self.mapView setUserInteractionEnabled:NO] non ha funzionato. Trovato soluzioni operative via Google o altre risposte qui su Stack (collegamento pls se trovi una risposta funzionante ..). Targeting per iOS 5. Ci dovrebbe essere un modo più semplice per farlo.Come disabilitare l'interazione dell'utente su MKMapView?

+0

FYI, ho provato questo e l'app è stata respinta per non essere interattiva. Non ho usato MKMapView, quindi non posso effettivamente rispondere alla tua domanda. –

+0

@SteveMallory Non dovrebbe essere rifiutato per fare questo in un solo caso d'uso, penso. Altre app lo fanno. Dai un'occhiata a Foursquare: In un caso d'uso (Shop Detail View) la mappa è praticamente bloccata sul posto che ha senso dal momento che il contesto del contenuto è un singolo negozio. – sean

+0

Dalla mia esperienza, non funziona se selezionato nel generatore di interfacce rimuovendo il segno di spunta su "Interazione utente abilitata" per la visualizzazione mappa. Tuttavia, impostarlo in base al codice ha funzionato per me. –

risposta

59

La chiave è quella di disabilitare zoom e volute, come ad esempio:

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

Ok questa risposta ha funzionato per me, per la maggior parte. I rubinetti stanno ancora arrivando, ma ciò non infrange il mio caso d'uso e gli utenti non possono scorrere o zoom, quindi sono felice. Grazie! – sean

+0

Usando questo, ero ancora in grado di usare i due movimenti di rotazione e inclinazione delle dita per spostare completamente il punto focale centrale fuori dalla vista, anche se era piuttosto noioso. – SandWyrm

+0

Qual è il punto di disabilitare l'interazione dell'utente se devi ancora farlo nel codice ...? – Mgamerz

0

È possibile impostare la proprietà Enabled MKAnnotationView NO

Per disabilitare Zoom, è possibile impostare mapView.zoomEnabled = FALSE;

abilitato

Un valore booleano che indica se l'annotazione è abilitato.

@property (nonatomic, getter=isEnabled) BOOL enabled 

Discussione

Il valore predefinito di questa proprietà è sì. Se il valore di questa proprietà è NO, la vista di annotazione ignora gli eventi di tocco e non può essere selezionata. Le sottoclassi possono anche visualizzare i contenuti delle annotazioni in modo diverso a seconda del valore di questa proprietà.

+0

Non capisco come questo si applica per disabilitare l'interazione sull'intera mappa. Non voglio che l'utente sia in grado di interagire ovunque all'interno dell'intera mappa, in questo particolare caso d'uso. – sean

1

Che ne dici di questo piccolo trucco! è sufficiente posizionare UIView sopra lo MKMapView con tutti gli stessi dettagli del fotogramma. Si noti inoltre che l'backgroundColor di questo punto di vista dovrebbe essere clearColor

+0

farà in modo che il pulsante [legale] della visualizzazione mappa non sia selezionabile? Mela come questa? – DeyaEldeen

17

È possibile farlo in Interface Builder come questo:

Like this