/ / MKMapView viewForAnnotazione non chiamata in iOS 8 - obiettivo-c, xcode, ios8, mkmapview, mkmapviewdelegate

MKMapView viewForAnnotation non chiama in iOS 8 - obiettivo-c, xcode, ios8, mkmapview, mkmapviewdelegate

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 № 1

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