这个有点晦涩。
这个 MKMapViewDelegate 有一个方法可以告诉你何时开始和完成拖动注释 View 。我是这样实现的:
- (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
关于造成这种情况的原因有什么想法吗?
最佳答案
我似乎通过添加来解决这个问题:
[annotationView setDragState:MKAnnotationViewDragStateNone];
在 if 语句的“结束拖动”部分。
关于iphone - 拖动注解 View 导致多次触发拖动状态委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6557173/