2013-05-13 4 views
12

क्या यह जांचने का कोई तरीका है कि मेरा टेबलव्यू अभी स्क्रॉलिंग समाप्त हो गया है या नहीं? table.isDragging और table.isDecelerating केवल दो विधियां हैं जिन्हें मैं पा सकता हूं। मुझे यकीन नहीं है कि टेबलव्यू स्क्रॉलिंग समाप्त होने पर मैं या तो अनुमान लगा सकता हूं या अधिसूचित कर सकता हूं।UITableView को स्क्रॉल करने के दौरान कैसे जांचें

मैं किसी भी तरह हर दूसरे की जाँच करने के टाइमर का उपयोग कर सकते अगर tableView या स्क्रॉल नहीं है?

उत्तर

0

UITableView UIScrollViewDelegate के अनुरूप है। कृपया, उस प्रोटोकॉल के दस्तावेज़ीकरण का संदर्भ लें, इसमें आपके पास आवश्यक विधियां हैं।

30

आप UIScrollViewDelegate प्रोटोकॉल तरीका लागू देंगी:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{ 
    if (!decelerate) { 
     [self scrollingFinish]; 
    } 
} 
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
    [self scrollingFinish]; 
} 
- (void)scrollingFinish { 
    //enter code here 
} 

ऊपर प्रतिनिधि विधि The scroll view sends this message when the user’s finger touches up after dragging content. The decelerating property of UIScrollView controls deceleration. के लिए दृश्य को रोकने के लिए रह गई है, पैरामीटर decelerateNO हो जाएगा।

दूसरा धीरे स्क्रॉल, यहां तक ​​कि स्क्रॉल रोक जब अपनी उंगली when the scrolling movement comes to a halt स्पर्श, के रूप में एप्पल दस्तावेज़ कहा, के लिए इस्तेमाल किया है।

+1

उपयोगकर्ता भी स्क्रीन के शीर्ष दोहन से तालिका स्क्रॉल आह्वान कर सकते हैं। दुर्भाग्यवश, इस मामले में scrollViewDidEndDecelerating को नहीं कहा जा रहा है, इसलिए हमें इस मामले को संभालने के लिए scrollViewDidScrollToTop को लागू करना होगा। –

+0

यह उत्तर सबसे अच्छा है, और @ जोवान स्टैंकोविक, आप बहुत सही हैं। –

4

नीचे कोड आप हर बार अद्यतन करेगा जब उपयोगकर्ता स्क्रॉल बंद कर दिया।

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{ 
    if (!decelerate) 
    { 
     if (isScrollingStart) 
     { 
      isScrollingStart=NO; 
      [self scrollingStopped]; 
     } 
    } 
} 
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 

    if (isScrollingStart) 
    { 
     isScrollingStart=NO; 
     [self scrollingStopped]; 
    } 
} 
- (void)scrollViewDidScroll:(UIScrollView *)scrollView 
{ 
    isScrollingStart=YES; 
} 
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 
{ 
    isScrollingStart=YES; 
} 
-(void)scrollingStopped 
{ 
    NSLog(@"Scrolling stopped"); 
} 
+0

बहुत अच्छी तरह से काम करता है, धन्यवाद। मूल्य 'isScrollingEnd' लिखा गया है लेकिन कभी भी उपयोग नहीं किया जाता है। क्या आपको बस इसका इस्तेमाल करने की ज़रूरत है? क्या आप स्क्रॉलिंग में इसे जांचना चाहते थे? – oyalhi

+0

अद्यतन उत्तर। , यहां स्क्रॉलिंग एंड का कोई उपयोग नहीं है :) –

+0

धन्यवाद! यह अच्छा काम कर रहा है। – Raja

0

shanegao's answer का उपयोग कर और उस पर जोवन स्टन्कोविक की टिप्पणी के बाद, मैं Swift3 के लिए इस तैयार -

extension NMViewController: UIScrollViewDelegate { 
    func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { 
     if !decelerate { 
      scrollViewDidEndDecelerating(scrollView) 
     } 
    } 

    func scrollViewDidScrollToTop(_ scrollView: UIScrollView) { 
     scrollViewDidEndDecelerating(scrollView) 
    } 

    func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) { 
     // Your logic to handle after scrolling is done 
    } 
} 
संबंधित मुद्दे