2013-10-24 2 views
1

Я пытаюсь добавить аннотации в мой MKMapView и я хочу установить аннотации быть интерактивными (интерактивную особенность, которую я сделал в didAddAnnotationViews.)IOS 7: didAddAnnotationViews не ответ на addAnnotation

На самом деле, это. функция работает отлично для IOS 6, но не работает на IOS 7. Я добавил простой оператор печати NSLog в моем didAddAnnotationViews метода, и я нашел didAddAnnotationViews не ответ на addAnnotaion правильно. Я думал, что сделалAddAnnotationViews будет называться каждый раз в ответ на addAnnotaion. Когда я добавил несколько аннотаций только один вывод журнала, это означает, что didAddAnnotationViews выполняется только как только я думаю.

Я использую MapKit, MKMapView и эта проблема только происходит в IOS 7. Может ли кто-нибудь дать мне идею, как исправить или найти причину, почему didAddAnnotationViews не работает должным образом?

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views 
{  
    MKAnnotationView *annotationView = [views objectAtIndex:0]; 
    MapViewAnnotation *annotation=annotationView.annotation; 
    NSLog(@"<==========didAddAnnotationViews=============> %@",annotation.title); 

    annotationView.canShowCallout=YES; 
    if(annotation.subtitle==nil){ 
     annotationView.rightCalloutAccessoryView = nil; 
    }else{ 
     annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
     MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(annotation.coordinate, 11000, 11000); 
     [mv setRegion:region animated:YES]; 
    } 
} 
+0

Можете ли вы привести пример того, что вы пробовали? – itsbruce

+0

Вы должны установить canShowCallout и rightCalloutAccessoryView в методе делегата viewForAnnotation - не в didAddAnnotationViews. Вы можете оставить setRegion там, хотя это может привести к странному поведению в зависимости от того, как добавляются аннотации. Независимо от версии iOS, не делайте жестких предположений о том, когда методы делегата будут вызваны видом карты. – Anna

+0

Спасибо, Анна Каренина, я решила свою проблему. – feohoTl

ответ

0

Метод подписи предполагает, что несколько видов аннотаций приведены в то же время:

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views; 

Попробуйте войти массив просмотров с:

NSLog(@"%@", views); 

Если вам повезет, то вам Вы увидите все свои аннотации. Итерации над ними вместо того, чтобы смотреть только на первый объект с индексом 0.

Смежные вопросы