2011-12-04 17 views
6

में मानक पैन जेस्चर रिकॉग्नाइज़र में कार्यक्षमता जोड़ें I UIScrollView में एक उंगली कहां है, इसका ट्रैक रखने की कोशिश कर रहा हूं। मैंने UIScrollView उपरोक्त किया है (नीचे देखें) लेकिन दुर्भाग्यवश जेस्चर पहचानकर्ता जो मैं जोड़ रहा हूं वह मानक को ओवरराइड कर रहा है।UIScrollView

परिणामस्वरूप मुझे NSLog(@"Pan") काम करने के लिए मिलता है लेकिन दुर्भाग्यवश दृश्य अब और स्क्रॉल नहीं करता है।

मैं दोनों दोनों संकेतों को एक ही समय में काम करने के लिए कैसे प्राप्त कर सकता हूं?

धन्यवाद।

- (void)viewDidLoad:(BOOL)animated 
{ 
    [super viewDidLoad:animated]; 

    UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)]; 
    [scrollView addGestureRecognizer:panRecognizer]; 
} 


- (void)pan:(id)sender { 
    NSLog(@"Pan"); 
} 
+2

आप यह नहीं कहते कि आप दोनों एक ही समय में होने पर क्या होने की उम्मीद करते हैं। क्या आप इसे स्क्रॉल करने की उम्मीद करते हैं * और * अपने पैन पहचानकर्ता को अपडेट करें? यदि ऐसा है, तो क्यों न केवल स्क्रॉल व्यू प्रतिनिधि विधियों को सुनें जिन्हें दृश्य स्क्रॉल करते समय बुलाया जाता है? –

+0

मैं स्क्रॉल और सभी बिंदुओं को रिकॉर्ड करने के लिए दृश्य को देखना चाहता हूं (मुझे पता है कि मैं 'locationInView:' method) के माध्यम से पुनर्प्राप्त कर सकता हूं। स्क्रॉल व्यू प्रतिनिधि दिलचस्प लगता है - मैंने कभी इसके बारे में नहीं सुना है ... मैं आईओएस प्रोग्रामिंग के लिए काफी नया हूं- यह कैसे काम करेगा? धन्यवाद। –

+0

मुझे [स्क्रॉल व्यू प्रतिनिधियों पर यह संदर्भ] मिला है (http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIScrollViewDelegate_Protocol/Reference/UIScrollViewDelegate.html#//apple_ref/occ/intf/ UIScrollViewDelegate) लेकिन मुझे समझ में नहीं आता कि स्पर्श के निर्देशांक कैसे प्राप्त करें। –

उत्तर

4

संपादित: इस विधि काम करता है! आपको जितनी जल्दी हो सके canCancelContentTouches सेट करने की आवश्यकता है (मैं इसे viewDidLoad में करता हूं)।

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

बजाय एक इशारा पहचानकर्ता मैं UIScrollView उपवर्गीकरण हूँ जोड़ने और अपने ही touchesBegan, touchesMoved, आदि तरीकों लिखने की

इस तरह मुझे पता है, जहां उपयोगकर्ता को छू रहा लेकिन दुर्भाग्य से PanGestureRecognizer नहीं को canCancelContentTouches स्थापित करने के बाद भी touchesCancelled हर बार जब मैं स्क्रॉल करने के लिए शुरू ट्रिगर कर रहा है।

क्या कोई जानता है क्यों? मुझे this भी मिला है।

14

यदि आप चाहते हैं कि यह मानक को ओवरराइड न करें तो आपको दोनों को एक साथ मान्यता प्राप्त करने की अनुमति देनी होगी।

- (void)viewDidLoad:(BOOL)animated 
{ 
    [super viewDidLoad:animated]; 

    UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(pan:)]; 
    panRecognizer.delegate = self; 
    [scrollView addGestureRecognizer:panRecognizer]; 
} 

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


- (void)pan:(id)sender { 
    NSLog(@"Pan"); 
} 
+0

यह पूरी तरह से काम करता है! –