2012-09-20 19 views
6

में डबल टैप ज़ूम अक्षम करें, मैं इसे दो बार टैप ज़ूम अक्षम करने में सक्षम था, इसे एक नए डबल टैप जेस्चर के साथ ओवरराइड करके। लेकिन ऐसा लगता है कि डबल टैप इशारा अब gesturerecognizer सरणी में नहीं है जो mkmapview के साथ आता है।आईओएस 5 में एमकेमैप व्यू (आईओएस 6)

NSArray *gestureRecognizers = [_mapView gestureRecognizers]; 
for (UIGestureRecognizer *recognizer in gestureRecognizers) { 
    NSLog(@"%@", recognizer); 
} 

रिटर्न iOS 6 में कुछ भी नहीं है, जहां iOS 5 में यह 2 recognizers, एकल नल के लिए एक और डबल नल के लिए एक वापसी होगी।

उत्तर

7

मैं एमकेमैपव्यू के सबव्यूज़ के इशारे पहचानकर्ताओं को देखता हूं। यह शायद कहीं कहीं भी है।

बेशक, एक और दृश्य के GRS साथ चारों ओर खिलवाड़ थोड़ा संदिग्ध है और संभावना अगली बार एप्पल MKMapView के बारे में कुछ बदल जाता है टूट जाएगा ...

संपादित करें: किसी के लाभ के लिए किसी और यह पढ़, कृपया जांचें कि यह UITapGestureRecognizer है और numberOfTapsRequired == 2 और numberOfTouchesRequired == 1 है।

इसके अलावा, मानचित्र पर डबल-टैप्स को पूरी तरह से अक्षम करने के बजाय, एनोटेशन पर डबल-टैप जीआर जोड़ने पर विचार करें और फिर [mapDoubleTapGR requireGestureRecognizerToFail:annotationDoubleTapGR] करें। फिर, हैकी — अगर यह अगले ओएस अपडेट पर टूट जाता है तो मुझे दोष न दें!

+0

की सहायता के लिए धन्यवाद आप सही थे! धन्यवाद। – Ludvig

+0

@ लुडविग: मेरे संपादन का दूसरा पैराग्राफ भी देखें :) –

+0

यह मेरे लिए काम करता है। आईओएस 9. – aparesidam

2

क्या आप उपयोगकर्ता को दृश्य के साथ कुछ भी करना चाहते हैं? यदि नहीं, तो userInteractionEnabled को NO पर सेट करना पर्याप्त है। यदि हां, तो आपको किस विशिष्ट इंटरैक्शन की अनुमति देने की आवश्यकता है? सब कुछ लेकिन डबल टैपिंग? उस बातचीत को अक्षम क्यों करें?

जितना अधिक हम आपके उपयोग के मामले के बारे में जानते हैं, उतना ही बेहतर उत्तर हम प्रदान कर सकते हैं।

+0

मैं चाहता हूं कि उपयोगकर्ता टैप करने में सक्षम न हो, डबल-टैप न करें। मेरे ऐप में उपयोगकर्ता को कभी-कभी एक एनोटेशन पर मल्टीप्ली टाइम्स टैप करना पड़ता है, इसलिए मैं नहीं चाहता कि ऐप ज़ूम करे। – Ludvig

0

आप इसके बजाय एक लंबे टैप इशारे का उपयोग कर सकते हैं, जो काम करता है।

2

यह मेरे लिए काम करता है: [_mapView.subviews [0] addGestureRecognizer: MyDoubleTapOverrider];

+0

यह उपयोग करना बहुत आसान है, और मेरे लिए काम करता है। – junaidsidhu

1

यह मेरे लिए काम करता है:

//INIT the MKMapView  
    -(id) init{ 
     ... 
     [self getGesturesRecursive:mapView]; 
     ... 
    } 

और फिर subviews के माध्यम से पुनरावर्ती क्रिया पाश जाने और पाते हैं जीआर: रों।

-(void)getGesturesRecursive:(UIView*)v{ 
     NSArray *gestureRecognizers = [v gestureRecognizers]; 
     for (UIGestureRecognizer *recognizer in gestureRecognizers) { 
      if ([recognizer isKindOfClass:[UITapGestureRecognizer class]]) {     
       [v removeGestureRecognizer:recognizer]; 
      } 
     } 

     for (UIView *v1 in v.subviews){ 
      [self getGesturesRecursive:v1]; 
     } 
    } 

यह उदाहरण सभी टैप-जीआर: एस को हटा देता है। लेकिन मुझे लगता है कि आप जो भी चाहें उसे हटाने के लिए निर्दिष्ट कर सकते हैं।

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