2010-10-22 7 views
11

मैं इंटरफ़ेसबिल्डर के बिना काम कर रहा हूं।IOS पर MKAnotationView के लिए ड्रैग और ड्रॉप का प्रबंधन कैसे करें?

मेरे पास YK, पर सेटड्रेग्जेबल के साथ एमकेएनोटेशन व्यू का एक उदाहरण है, मेरे एमकेमैप व्यू में मेरा एनोटेशन व्यू प्रदर्शित होता है और मैं इसे खींच और छोड़ सकता हूं।

ड्रॉप कार्रवाई कब की जाती है जब मैं एक विधि निष्पादित कर सकता हूं? इस विधि में मुझे अपने एनोटेशन व्यू के नए निर्देशांक की आवश्यकता है।

उत्तर

31

आपने सेटअप एक 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 से पहले ओएस में काम करने की ज़रूरत है, तो ड्रैगिंग के लिए अधिक मैन्युअल काम की आवश्यकता होती है। दस्तावेज़ों में लिंक यह भी उदाहरण देता है कि अगर आपको इसकी आवश्यकता है तो ऐसा कैसे करें।

+0

धन्यवाद परिवर्तन नहीं करता है के बाद से आप मुझे "didChangeDragState" नहीं पता था, और यह वही था जो मैं खोज रहा था। –

5

आपको निम्न जोड़ सकते हैं:

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

MKAnnotationView अपने खींचें राज्य सही रूप में (जो अपनी एनोटेशन के साथ अपने नक्शे पैन कर सकता है, भले ही आपने खींचकर रोक)

संबंधित मुद्दे