Mapkit,如何检测已加载的注释

时间:2010-11-03 01:19:54

标签: iphone cocoa-touch mapkit

当引脚完成它的放置动画时,我想要弹出注释标注。目前,我可以使用以下方法进行模拟:

- (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 个答案:

答案 0 :(得分:5)

尝试使用didAddAnnotationViews委托方法:

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

确保已设置地图视图的委托。

修改
如果你需要添加一个延迟,那么试试这个(例如延迟1/2秒):

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