2013-09-23 5 views
5

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

उत्तर

12

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

UIPanGestureRecognizer *subviewPanRecognizer = [[UIPanGestureRecognizer alloc] 
    initWithTarget:self action:@selector(panSubview:)]; 
[subview addGestureRecognizer:subviewPanRecognizer]; 

// play nice with subview's pan gesture 
[scrollView.panGestureRecognizer 
    requireGestureRecognizerToFail:subviewPanRecognizer]; 
+0

यह डिफ़ॉल्ट व्यवहार प्रतीत होता है (यही वह है जो मैं UISmrollView सबव्यू के साथ UIScrollView में अभ्यास में देख रहा हूं)। क्या कोई पुष्टि/बीमा कर सकता है? – Norswap

+1

यह मेरे लिए काम नहीं करता है –

+0

खूबसूरती से काम करता है, खासकर जब सबवेव्यू पर एक प्रतिनिधि को लागू करते हैं और 'इशारा रिकॉग्नाइज़रशॉटबिनिन' लागू करते हैं। –

0

ओवरराइट करें नीचे इन दो प्रतिनिधि,

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 
return YES; 

}

यह आपको दोनों जेस्चर को करने की अनुमति देगा, डिफ़ॉल्ट वापसी नहीं है, सीधे इसलिए हमें इसे ओवरराइट करने और YES वापस करने की आवश्यकता है।

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{ 
if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) { 
    if ([otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) { 
     return NO; 
    }else{ 
     return YES; 
    } 
} 
return YES; 

}

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

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