我在沒有InterfaceBuilder的情況下工作。如何在iOS上管理MKAnnotationView的拖放操作?
我有一個MKAnnotationView與setDraggable的YES的實例, 在我的MKMapView我的註釋視圖顯示,我可以拖放它。
如何在執行放置操作時執行方法? 在這種方法中,我需要我的註釋視圖的新座標。
我在沒有InterfaceBuilder的情況下工作。如何在iOS上管理MKAnnotationView的拖放操作?
我有一個MKAnnotationView與setDraggable的YES的實例, 在我的MKMapView我的註釋視圖顯示,我可以拖放它。
如何在執行放置操作時執行方法? 在這種方法中,我需要我的註釋視圖的新座標。
,如果你已經安裝了setCoordinate方法您MKAnnotation對象正確,那麼在didChangeDragState方法,新座標應該已經在註釋對象:
- (void)mapView:(MKMapView *)mapView
annotationView:(MKAnnotationView *)annotationView
didChangeDragState:(MKAnnotationViewDragState)newState
fromOldState:(MKAnnotationViewDragState)oldState
{
if (newState == MKAnnotationViewDragStateEnding)
{
CLLocationCoordinate2D droppedAt = annotationView.annotation.coordinate;
NSLog(@"dropped at %f,%f", droppedAt.latitude, droppedAt.longitude);
}
}
僅供參考,請參閱「標記你在docs here中作爲可拖動的註釋視圖「部分。如果您的應用程序需要在4.x之前的OS中工作,則拖動需要更多手動工作。文檔中的鏈接也指出瞭如果需要的話,如何做到這一點的一個例子。
,你可能還需要增加以下內容:
if (newState == MKAnnotationViewDragStateStarting) {
annotationView.dragState = MKAnnotationViewDragStateDragging;
}
else if (newState == MKAnnotationViewDragStateEnding || newState == MKAnnotationViewDragStateCanceling) {
annotationView.dragState = MKAnnotationViewDragStateNone;
}
因爲MKAnnotationView不準確(這可能使你的地圖泛用您的註釋,你甚至停止後拖着)
謝謝改變其拖拽狀態你我不知道「didChangeDragState」,這是我想要的。 – 2010-10-23 10:39:49