2009-10-21 17 views
18

पर क्लिक की गई घटना प्राप्त करें मैं MKMapView का उपयोग कर रहा हूं जिसमें MKAnnotation पिन शामिल हैं।
मानचित्र के ऊपर मैं MKAnnotation पिन की विस्तृत जानकारी के साथ UITableView दिखा रहा हूं।एमकेमैप व्यू: एनोटेशन पिन

मेरी समस्या: जब मैं एक पिन का चयन करता हूं, तो मैं संबंधित तालिका कक्ष का चयन करना चाहता हूं। इसके लिए पिन चुनने पर मैं एक ईवेंट/प्रतिनिधि को पकड़ना चाहता हूं। मैं कॉलआउट एक्सेसरी

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 

उत्तर

1

पर कॉल करने के बारे में बात नहीं कर रहा हूं, मैंने मैपकिट में ऐसा करने का एक आसान तरीका नहीं देखा है। प्रतिनिधि पर mapView:annotationWasTapped: नहीं है।

ऐसा करने का एक तरीका आपकी खुद की एनोटेशन व्यू सबक्लास प्रदान करना होगा। कस्टम एनोटेशन व्यू setSelected:animated: में या निचले स्तर के ईवेंट हैंडलर में पिन चयन को कैप्चर कर सकता है और उस जानकारी को आपके व्यू कंट्रोलर तक पास कर सकता है।

+0

ओह, अच्छा लगता है और बहुत अधिक काम नहीं लगता है! धन्यवाद! – squeezer123

+0

इस तरह से मैं इसे भी कर रहा था। अजीब बात यह है कि ऐप्पल ने इसके लिए कोई कॉलबैक प्रदान नहीं किया है:/ – yonel

3

आप चयनित-घटना के लिए एक पर्यवेक्षक का उपयोग कर सकते हैं:

[pin addObserver:self 
     forKeyPath:@"selected" 
     options:NSKeyValueObservingOptionNew 
     context:@"ANSELECTED"]; 

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{ 

    NSString *action = (NSString*)context; 

    if([action isEqualToString:@"ANSELECTED"]){ 

     BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue]; 
     if (annotationAppeared) { 
      // clicked on an Annotation 
     } 
     else { 
      // Annotation disselected 
     } 
    } 
} 
42

बस इस के लिए एक अद्यतन - आईओएस 4 में वहाँ MKMapViewDelegate तरीकों कि और एनोटेशन चयन ट्रैक करने के लिए इस्तेमाल किया जा सकता हैं डी-चयन:

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view 
+4

यदि आप जानना चाहते हैं कि उपयोगकर्ता विस्तारित/चयनित एनोटेशन पर क्लिक कर रहा है तो आप view.selected == YES में किया गया चयन करेंअनोटेशन व्यू – nylund

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