2014-10-29 28 views
6

मैं एक आईओएस ऐप बना रहा हूं जो नक्शा दृश्य में निर्मित का उपयोग करता है। मैं कस्टम एनोटेशन सफलतापूर्वक रखता हूं, इत्यादि। हालांकि, मुझे प्रतिनिधि समारोह के साथ समस्या हो रही है जिसे एनोटेशन दबाया जाता है (mapView: didSelectAnotationView)।मानचित्र दृश्य: didSelectAnotationView: ठीक से काम नहीं कर रहा है।

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

+0

मेरे पास एक ही समस्या है, लेकिन एक अंतर है, यानी। जब मैपव्यू की सीमा पर कस्टम एनोटेशनव्यू आता है तो मुझे समस्या मिल रही है। –

उत्तर

4

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

प्रतिनिधि कॉल में अचयनित करने के लिए एनोटेशन सेट करने के लिए एक साधारण फिक्स हो सकता है। इससे आपको कॉल फिर से प्राप्त करने की अनुमति मिलनी चाहिए।

[annotation setSelected:NO animated:NO]; 

आपको जिस विधि को कॉल करने की आवश्यकता है, उसके लिए यहां सूचीबद्ध है। https://developer.apple.com/library/ios/documentation/mapkit/reference/MKAnnotationView_Class/index.html#//apple_ref/occ/instm/MKAnnotationView/setSelected:animated:

+0

मुझे –

+0

के लिए काम नहीं किया आप के लिए क्या काम नहीं किया? क्या आप अभी भी उद्देश्य-सी का उपयोग कर रहे हैं? यह उत्तर बहुत पुराना है, इसलिए इसे मध्यवर्ती समय में अप्रचलित कर दिया जा सकता था। – Bergasms

5

मित्र ने एक विचार सुझाया और यह सही साबित हुआ। जब चयन किया गया चयन करें, आग लगती है, यह वास्तव में किसी भी तरह चुने गए एनोटेशन को टैग करती है। फिर जब आप इसे फिर से क्लिक करते हैं, तो प्रतिनिधि समारोह आग नहीं करता है क्योंकि यह 'पहले से ही चुना गया है'। एक बार जब आप अपनी इच्छा पूरी कर लेते हैं तो आपको निम्न कार्य को कॉल करके एनोटेशन को मैन्युअल रूप से अचयनित करना होगा।

[mapView deselectAnnotation:view.annotation animated:false]; 
1
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)aView 
    { 
     indexPathTag=aView.tag; 
     [mapView deselectAnnotation:aView.annotation animated:YES]; 

    } 
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)aView 
    { 
    } 

मुझे आशा है कि यह आपके लिए काम करेंगे :) मैं एक ही समस्या का सामना करना पड़ा है, इस कोड मेरे लिए काम किया।

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