4

这个有点晦涩难懂。

这个 MKMapViewDelegate 有一个方法应该告诉你什么时候开始并完成拖动注释视图。我已经这样实现了:

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)annotationView didChangeDragState:(MKAnnotationViewDragState)newState fromOldState:(MKAnnotationViewDragState)oldState {

    if (oldState == MKAnnotationViewDragStateStarting && newState == MKAnnotationViewDragStateEnding)
    {
        NSLog(@"Ending drag");
    }

    if (newState == MKAnnotationViewDragStateStarting)
    {
        NSLog(@"Beginning drag");
    }
}

这种作品。但是,当我停止拖动注释并再次拖动它时,上述方法被触发两次,然后是 3 次等等。所以控制台显示:

Beginning drag
Ending drag

Beginning drag
Beginning drag
Ending drag
Ending drag

Beginning drag
Beginning drag
Beginning drag
Ending drag
Ending drag
Ending drag

Beginning drag
Beginning drag
Beginning drag
Beginning drag
Ending drag
Ending drag
Ending drag
Ending drag

关于造成这种情况的任何想法?

4

1 回答 1

10

我似乎通过添加来解决这个问题:

[annotationView setDragState:MKAnnotationViewDragStateNone];

在 if 语句的“结束拖动”部分。

于 2011-07-02T13:27:40.553 回答