这个有点晦涩难懂。
这个 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
关于造成这种情况的任何想法?