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");
    }
}

この種の作品。ただし、注釈のドラッグを停止して再度ドラッグすると、上記のメソッドが 2 回トリガーされ、次に 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 に答える