Mapkit, как обнаружить аннотации загружены - PullRequest
3 голосов
/ 03 ноября 2010

Я хочу, чтобы выноска аннотаций всплывала, когда булавка закончила свою анимацию отбрасывания. В настоящее время я могу смоделировать это следующим методом:

- (void)showCallOut {
    [myMapView selectAnnotation:[myMapView.annotations objectAtIndex:0] animated:YES];
}

В моем viewDidLoad, где создается моя аннотация

    [myMapView addAnnotation:annotation];

Проблема в том, что вы просто не можете вызвать [self showCallOut]; после этого, потому что во время выполнения он отвечает до того, как MapKit "подтвердит" удаление аннотации. Мне нужно либо создать задержку (я хотел бы избежать этого), либо найти правильный способ определения наличия аннотаций, а затем запустить метод showCallOut.

Спасибо за любую помощь!

Спасибо aBitObvious ниже за предоставление решения:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
    [self performSelector:@selector(showCallOut) withObject:nil afterDelay:1];
}

1 Ответ

5 голосов
/ 03 ноября 2010

Попробуйте использовать метод делегата didAddAnnotationViews:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
    [self showCallOut];
}

Убедитесь, что установлен делегат вашей карты.

Edit:
Если вам необходимо добавить задержку независимо, попробуйте это вместо этого (например, с задержкой 1/2 секунды):

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
    [self performSelector:@selector(showCallOut) withObject:nil afterDelay:0.5];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...