2011-07-02 6 views
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"); 
    } 
} 

この種の作品です。これを引き起こしているものに

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 

任意のアイデア:私は注釈をドラッグを停止し、再びそれをドラッグするとしかし、その後、上記の方法は、二回それでは3回などのコンソールが表示されトリガされましたか?

答えて

10

私は追加することによってこの問題を解決するように見えた:

[annotationView setDragState:MKAnnotationViewDragStateNone]; 

をIF文の「エンディングドラッグ」部分に。

関連する問題