【问题标题】:Mapkit, how to detect annotations have loadedMapkit,如何检测注释已加载
【发布时间】: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];
}

【问题讨论】:

    标签: iphone cocoa-touch mapkit


    【解决方案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)。我会用我的方法编辑我的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 2013-06-14
    相关资源
    最近更新 更多