我希望在 pin 完成它的放置动画时弹出注释标注。目前我可以用以下方法模拟它:

- (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];
}

最佳答案

尝试使用 didAddAnnotationViews 委托(delegate)方法:

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

确保您的 map View 的委托(delegate)已设置。

编辑:
如果您无论如何都需要添加延迟,请尝试使用此方法(例如延迟 1/2 秒):
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
    [self performSelector:@selector(showCallOut) withObject:nil afterDelay:0.5];
}

关于iphone - Mapkit,如何检测注解已加载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4083491/

10-13 07:31