2011-12-27 17 views
37

मैं पता लगाने के लिए अगर mytable दृश्य स्क्रॉल किया गया है, मैं इस तरह सभी स्पर्श ईवेंट की कोशिश की हैं:UITableView स्क्रॉल घटना

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
    { 
    [super touchesBegan:touches withEvent:event]; 
    //my code 
    } 

लेकिन ऐसा लगता है कि सभी स्पर्श ईवेंट प्रतिक्रिया स्क्रॉल करने के लिए नहीं है, लेकिन वे केवल प्रतिसाद जब कोशिकाओं को छुआ, स्थानांतरित किया जाता है, ... आदि

क्या UITableView की स्क्रॉल घटना का पता लगाने का कोई तरीका है?

+2

देखें इस [iPhone में UIScroll दृश्य में टच घटनाक्रम] (http: // stackoverflow .com/a/3603140/1072867) – akk

उत्तर

107

आप UITableViewDelegate प्रोटोकॉल लागू हैं, तो आप भी UIScrollViewDelegate तरीकों में से एक को लागू कर सकते हैं:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 

या

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 

उदाहरण के लिए, यदि आप एक संपत्ति tableView कहा जाता है, तो:

// ... setting up the table view here ... 
self.tableView.delegate = self; 
// ... 

// Somewhere in your implementation file: 
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    NSLog(@"Will begin dragging"); 
} 

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    NSLog(@"Did Scroll"); 
} 

ऐसा इसलिए है क्योंकि UITableViewDelegateUIScrollViewDelegate के अनुरूप है, जैसा कि दस्तावेज़ में या हेडर फ़ाइल में देखा जा सकता है।

+0

यह काम करता है, धन्यवाद! –

+1

हमारे पास एक से अधिक UITableView के बारे में क्या है? – Solidus

+1

आपको दोनों टेबल दृश्यों के प्रतिनिधि को 'self' पर सेट करने में सक्षम होना चाहिए और फिर जांचें कि कौन सी स्क्रॉलव्यू' पारित हो रही है। [यहां देखें] (http://pastebin.com/FzmcYNzv)। – fabian789

6

यदि आपके पास सॉलिडस द्वारा पूछे गए एक से अधिक टेबल दृश्य हैं, तो आप कॉलबैक से स्क्रॉलव्यू को टेबलव्यू में डाल सकते हैं क्योंकि UITableView UIScrollView से लिया गया है और फिर स्रोत तालिकादृश्य खोजने के लिए तालिकादृश्यों की तुलना करें।

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {  
     UITableView* fromTableView = (UITableView*) scrollView; 
     UITableView* targetTableView = nil; 
     if (fromTableView == self.leftTable) { 
      targetTableView = self.leftTable; 
     } else { 
      targetTableView = self.rightTable; 
     } 
... 
} 
+0

सही यह मेरी मदद की – Paul

1

ये स्विफ्ट 3 के लिए UITableViewDelegate से तरीकों का पता लगाने के लिए जब एक UITableView स्क्रॉल करेगा कर रहे हैं या किया स्क्रॉल:

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) { 

} 

func scrollViewDidScroll(_ scrollView: UIScrollView) { 

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