Metodi di delega di MKMapView non richiamati in iOS 8. In viewDidLoad:
CGRect mapViewFrame = CGRectMake(0.0, 129.0, 320.0, 419.0);
_mapView = [[MKMapView alloc] initWithFrame:mapViewFrame];
[_mapView setMapType:MKMapTypeStandard];
[_mapView setDelegate:self];
[_mapView setShowsUserLocation:YES];
Questi metodi non vengono mai chiamati:
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{};
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {}
Nelle versioni precedenti di iOS 8 funzionava tutto.
risposte:
0 per risposta № 1Hai provato ad aggiungere altre annotazioni (non la posizione dell'utente) e vedere se i metodi delegati vengono richiamati? Ciò ti aiuterà a risolvere il problema
0 per risposta № 2
Penso che il recupero della posizione dell'utente sia cambiato in iOS 8. Ora è necessario utilizzare l'autorizzazione CLLocationManager per tracciare la posizione dell'utente. mapView.showsUserLocation = YES non è più sufficiente.
È necessaria un'istanza CLLocationManager:
@property(nonatomic, strong) CLLocationManager *locationManager;
In viewDidLoad
self.locationManager = [[CLLocationManager alloc] init];
self.locationManager.delegate = self;
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) {
[self.locationManager requestWhenInUseAuthorization];
}
[self.locationManager startUpdatingLocation];
// your mapKit stuff...
E questo dovrebbe iniziare a tracciare la posizione dell'utente e chiamare i metodi delegati.