我希望在 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/