Mapkit,如何检测注释已加载
Posted
技术标签:
【中文标题】Mapkit,如何检测注释已加载【英文标题】:Mapkit, how to detect annotations have loaded 【发布时间】:2010-11-03 01:19:54 【问题描述】:我希望在 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];
【问题讨论】:
【参考方案1】:尝试使用 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];
【讨论】:
这很好用!有什么快速的方法可以增加延迟吗?目前,随着图钉掉落,CallOut 会显示出来。 太好了,我设法得到它,但也许你的方法会比我的方法有所改进。我只是在学习这种语言(项目的第 3 天/使用 xcode/objective-c)。我会用我的方法编辑我的问题。以上是关于Mapkit,如何检测注释已加载的主要内容,如果未能解决你的问题,请参考以下文章