2012-06-29 8 views
6

पर मानचित्र एनोटेशन को अचयनित करने के लिए कैसे करें मेरा कार्य दूसरे टैप पर एक नक्शा annotatnion को अचयनित करना है।दूसरी टैप

मुझे यह नहीं मिला कि नक्शा व्यू फ़ंक्शंस के साथ इसे कैसे किया जाए। इसलिए मैं stackoverflow से एक लेख का इस्तेमाल किया और इस तरह से कार्य करें:

- (void)viewDidLoad 
{ 
    annotationTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(annotationTapRecognized:)]; 
    annotationTap.numberOfTapsRequired = 1; 
    annotationTap.delegate = self; 
} 

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 
{ 
    [view addGestureRecognizer:annotationTap]; 
} 

- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view 
{ 
    [view removeGestureRecognizer:annotationTap]; 
} 

- (void)annotationTapRecognized:(UIGestureRecognizer *)gesture 
{ 
    NSArray *selectedAnnotations = self.viewMap.selectedAnnotations; 
    for (MapAnnotation *annotationView in selectedAnnotations) { 
     [self.viewMap deselectAnnotation:annotationView animated:NO]; 
    } 
} 

यह काम करता है सही लगती है, लेकिन यह नहीं है। जब मैं एनोटेशन पर टैप करता हूं तो दूसरी बार कॉलआउट गायब हो जाता है और फिर दिखाई देता है।

कोई विचार?

अग्रिम धन्यवाद।

उत्तर

18

मुझे समाधान मिला है। शायद यह अच्छा नहीं है।

मैंने बूलियन "शो" जोड़ा है, जैसा कि लक्सस्फीर ने उल्लेख किया है। तो मेरे कार्य निम्न की तरह दिखते हैं:

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 
{ 
    [view addGestureRecognizer:annotationTap]; 

    if (isShow) { 
     NSArray *selectedAnnotations = self.viewMap.selectedAnnotations; 
     for (MapAnnotation *annotationView in selectedAnnotations) { 
      [self.viewMap deselectAnnotation:annotationView animated:YES]; 
     } 
     isShow = FALSE; 
    } 
} 

- (void)annotationTapRecognized:(UIGestureRecognizer *)gesture 
{ 
    NSArray *selectedAnnotations = self.viewMap.selectedAnnotations; 
    for (MapAnnotation *annotationView in selectedAnnotations) { 
     [self.viewMap deselectAnnotation:annotationView animated:YES]; 
    } 
    isShow = TRUE; 
} 

शायद यह किसी के लिए उपयोगी होगा :)।

धन्यवाद।

1

शायद आपको एक बूलियन "दृश्यमान" जोड़ना चाहिए और इसके परिणामस्वरूप कार्य करना चाहिए। ऐसा लगता है कि आपको इशारा कहा जाता है और फिर "चयन किया गया" फिर से कहा जाता है।

+0

लेकिन मैं इसे कहां जोड़ूं? मैंने इसके बारे में सोचा। लेकिन मैं क्लिक पर कॉलआउट प्रदर्शित करने से कैसे रोक सकता हूं? धन्यवाद। – Igor