拖动注释视图会导致多次触发拖动状态委托方法

时间:2011-07-02 13:04:47

标签: iphone objective-c ios mkannotation mkannotationview

这个有点模糊。

这个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

关于导致这种情况的任何想法?

1 个答案:

答案 0 :(得分:10)

我似乎通过添加:

来解决这个问题
[annotationView setDragState:MKAnnotationViewDragStateNone];

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