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ď č. 1Pokú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.