2010-11-03 154 views
3

我希望注释标注在引脚完成拖放动画时弹出。目前,我能够用下面的方法来模拟它: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]; 
} 

回答

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]; 
} 
+0

这个伟大的工程!任何快速离开你的头顶来添加延迟?目前,CallOut显示为引脚掉线。 – 2010-11-03 01:36:10

+0

我会将其添加到答案中。 – Anna 2010-11-03 01:37:43

+0

太棒了,我设法得到它,但也许你的方法会比我的改进。我只是学习这种语言(项目第3天/使用xcode/objective-c)。我将用我的方法编辑我的问题。 – 2010-11-03 01:41:20