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

這種作品。然而,當我停止拖動註解,並拖動它再次,那麼上面的方法被觸發兩次,然後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 

是什麼原因造成這種任何想法?

回答

10

我好像加入到解決這個問題:

[annotationView setDragState:MKAnnotationViewDragStateNone]; 

if語句的「拖動結束」的一部分。