/ / MKMapView viewForAnnotácia nie je volaná v systéme iOS 8 - objektív-c, xcode, ios8, mkmapview, mkmapviewdelegate

MKMapView viewForAnnotation not call in iOS 8 - objektív-c, xcode, ios8, mkmapview, mkmapviewdelegate

Metódy delegátov MKMapView neboli volané v systéme iOS 8. V pohľadeDidLoad:

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];

Tieto metódy sa nikdy neozývajú:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{};

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {}

V predchádzajúcich verziách iOS 8 všetko fungovalo.

odpovede:

0 pre odpoveď č. 1

Pokúsili ste sa pridať iné poznámky (nie umiestnenie používateľa) a zistiť, či sa nazývajú metódy delegáta? To vám pomôže odstrániť problém


0 pre odpoveď č. 2

Myslím, že vyhľadávanie lokality používateľa sa zmenilo v systéme iOS 8. Teraz musíte použiť autorizáciu CLLocationManager na sledovanie polohy používateľa. mapView.showsUserLocation = ÁNO nestačí.

Potrebujete inštanciu CLLocationManager:

@property(nonatomic, strong) CLLocationManager *locationManager;

V pohľadeDidLoad

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

A toto by malo začať sledovať polohu používateľa a zavolať metódy delegáta.