Ho un MKMapView
con un delegato registrato in modo da poter ascoltare gli eventi di cambio regione (in particolare, regionDidChangeAnimated). Sto cercando un modo efficace per dire se un evento di cambio regione è il risultato di un utente che trascina la mappa o da una richiesta di programmazione setRegion:
.Come posso sapere quando l'evento regionChange su MKMapView è programmato o trascinato dall'utente di MKMapView?
Il mio obiettivo è quello di avere un'app che auto-centra la mappa in base a una traccia di posizione, a meno che l'utente non abbia spostato la mappa manualmente, a quel punto si spegnerà automaticamente l'autocentraggio. Pertanto, sto chiamando setRegion: per ripristinare la visualizzazione della mappa come appropriato, ma ho difficoltà a capire se la chiamata regionDidChangeAnimated:
risultante al delegato è programmatica o da un riquadro utente. Ho provato a hackerare qualcosa insieme, ma continuo a correre in condizioni di gara quando l'utente inizia a panning proprio quando arriva un aggiornamento di posizione.
Aveva anche questo problema. Il tuo codice è una buona soluzione. È un po 'hacky, ma non così male visto che si legge ancora come un buon inglese. È solo una bandiera booleana :) – chakrit