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

Mik*_*iel 3 iphone cocoa-touch mapkit

当引脚完成它的放置动画时,我希望弹出注释标注.目前我可以使用以下方法模拟它:

- (void)showCallOut {
    [myMapView selectAnnotation:[myMapView.annotations objectAtIndex:0] animated:YES];
}
Run Code Online (Sandbox Code Playgroud)

在我viewDidLoad的地方创建了我的注释

    [myMapView addAnnotation:annotation];
Run Code Online (Sandbox Code Playgroud)

问题是你之后根本无法[self showCallOut];调用,因为在运行时它会在MapKit"确认"注释掉落之前做出响应.我需要创建一个延迟(想要避免这种情况)或者找到正确的方法来检测注释何时就位,然后运行该showCallOut方法.

谢谢你的帮助!

感谢下面的aBitObvious提供解决方案:

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

小智 5

尝试使用didAddAnnotationViews委托方法:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
    [self showCallOut];
}
Run Code Online (Sandbox Code Playgroud)

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

编辑:
如果您需要添加延迟,请尝试相反(例如延迟1/2秒):

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