2010-10-22 16 views

cevap

31

Bir setCoordinate yöntemi ile sizin MKAnnotation nesne düzgün, daha sonra didChangeDragState yönteminde, yeni koordinat ettik kurulum zaten açıklama nesnesi olması gerekiyorsa: Referans olarak

- (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); 
    } 
} 

, "İşaretleme bkz Sizin docs here'daki "Sürüklenebilir Görünüm" sekmesi görünümü. Uygulamanızın 4.x'den önceki bir işletim sisteminde çalışması gerekiyorsa, sürükleme daha fazla manuel çalışma gerektirir. Dokümanlardaki bağlantı da, gerektiğinde bunu nasıl yapacağınıza dair bir örnek gösterir.

+0

Tanklarının (sürükleyerek durdurmak sonra bile ek açıklama ile harita tava yapmak olabilir) onun sürükleme durumunu değiştirmez çünkü "didChangeDragState" ı bilmiyordum ve ne aradığımdan çok memnun kaldım. –

5

aşağıdakileri de eklemek isteyebilirsiniz:

if (newState == MKAnnotationViewDragStateStarting) { 
    annotationView.dragState = MKAnnotationViewDragStateDragging; 
} 
else if (newState == MKAnnotationViewDragStateEnding || newState == MKAnnotationViewDragStateCanceling) { 
    annotationView.dragState = MKAnnotationViewDragStateNone; 
} 

MKAnnotationView doğru