असफल होने के लिए एकल टैप की आवश्यकता है this question पर इसी तरह की समस्या के साथ, मैं अपने UICollectionView
उदाहरण में एक डबल टैप जेस्चर पहचानकर्ता जोड़ने की कोशिश कर रहा हूं।UICollectionView में डबल टैप जोड़ें;
मुझे डिफ़ॉल्ट एकल टैप को UICollectionViewDelegate
विधि collectionView:didSelectItemAtIndexPath:
पर कॉल करने से रोकने की आवश्यकता है।
इस लक्ष्य को हासिल करने के लिए मैं कोड straight from Apple's Collection View Programming Guide (Listing 4-2) लागू: एक डबल नल पर tapGesture
आग लेकिन डिफ़ॉल्ट टैप रोका और नहीं कर रहा है:
UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture:)]; NSArray* recognizers = [self.collectionView gestureRecognizers]; // Make the default gesture recognizer wait until the custom one fails. for (UIGestureRecognizer* aRecognizer in recognizers) { if ([aRecognizer isKindOfClass:[UITapGestureRecognizer class]]) [aRecognizer requireGestureRecognizerToFail:tapGesture]; } // Now add the gesture recognizer to the collection view. tapGesture.numberOfTapsRequired = 2; [self.collectionView addGestureRecognizer:tapGesture];
इस कोड को अपेक्षा के अनुरूप काम नहीं कर रहा है प्रतिनिधि की didSelect...
विधि अभी भी बुलाई गई है।
डीबगर में कदम उठाने से पता चलता है कि अगर स्थिति, [aRecognizer isKindOfClass:[UITapGestureRecognizer class]]
, कभी भी सत्य का मूल्यांकन नहीं करती है और इसलिए नई tapGesture
पर विफलता-आवश्यकता स्थापित नहीं की जा रही है।
इस डिबगर चल रहा है के माध्यम से हर बार आदेश के लिए लूप:
po (void)NSLog(@"%@",(NSString *)NSStringFromClass([aRecognizer class]))
पता चलता है कि डिफ़ॉल्ट जेस्चर recognizers (वास्तव में) उदाहरणों नहीं UITapGestureRecognizer
हैं।
इसके बजाय वे निजी कक्षाएं UIScrollViewDelayedTouchesBeganGestureRecognizer
और UIScrollViewPanGestureRecognizer
हैं।
सबसे पहले, मैं निजी एपीआई के नियमों को तोड़ने के बिना स्पष्ट रूप से इनका उपयोग नहीं कर सकता। दूसरा, UIScrollViewDelayedTouchesBeganGestureRecognizer
से requireGestureRecognizerToFail:
के माध्यम से वांछित व्यवहार प्रदान करने के लिए प्रतीत नहीं होता है - यानी प्रतिनिधि का didSelect...
अभी भी कहा जाता है।
मैं संग्रह दृश्य में दो बार टैप जोड़ने के लिए UICollectionView
के डिफ़ॉल्ट इशारा पहचानकर्ताओं के साथ कैसे काम कर सकता हूं और डिफ़ॉल्ट एकल टैप को प्रतिनिधि की collectionView:didSelectItemAtIndexPath:
विधि को फायर करने से रोक सकता हूं?
अग्रिम धन्यवाद!
लागू नहीं कर रही है 'collectionView: didSelectItemAtIndexPath:' पर्याप्त? – cahn
@cahn: डर नहीं - मुझे मानक व्यवहार के अलावा डबल टैप की आवश्यकता है। –
[यह प्रश्न] (http://stackoverflow.com/questions/12792661/how-to-detect-double-taps-on-cells-in-a-uicollectionview) आपके जैसा ही समस्या हल करने लगता है। क्या यह काम करता है? –