2013-12-14 11 views
8

मेरे पास छवियों के साथ एक UIScrollView है और जब उपयोगकर्ता स्क्रॉलव्यू के अंत तक स्क्रॉल करता है तो मैं सामग्री को अपडेट करना चाहता हूं।UIScrollview नीचे पता चला

कोड नीचे scrollViewDidScroll: प्रतिनिधि में कार्यान्वित किया जाता

CGFloat scrollViewHeight = imagesScrollView.bounds.size.height; 
CGFloat scrollContentSizeHeight = imagesScrollView.contentSize.height; 
CGFloat bottomInset = imagesScrollView.contentInset.bottom; 
CGFloat scrollViewBottomOffset = scrollContentSizeHeight + bottomInset - scrollViewHeight; 

if(imagesScrollView.contentOffset.y > scrollViewBottomOffset){ 


    [imagesView addSubview:imagesBottomLoadingView]; 

    [self downloadImages]; 

} 

मेरे समस्या है कि तह तक उपयोगकर्ता स्क्रॉल, मेरे समारोह कई कहा जाता है जब यह पता लगाने के लिए जब scrollview के नीचे तक पहुँच जाता है मेरी कोड है बार, लेकिन मैं इसे केवल एक बार कॉल करना चाहता हूं। मैं imagesScrollView.contentOffset.y == scrollViewBottomOffset साथ की कोशिश की लेकिन यह काम नहीं करता और समारोह

+0

अतिरिक्त कॉल को फ़िल्टर करने, उदाहरण के लिए, एक शर्त झंडा जोड़े की तरह अगर (imagesView बच्चे imagesBottomLoadingView है) – xfx

+0

ठीक है, यह इतना आसान था, लेकिन मैं इस बारे में सोच नहीं किया। धन्यवाद! – lubilis

उत्तर

2

आप एक बूलियन जोड़ने के बारे में सोचा है तक पहुँचने के लिए है कि में contentOffset की जाँच करें। इसे पहली बार विधि कहा जाता है और जब उपयोगकर्ता बैक अप लेता है तो इसे अपडेट करें।

0

नहीं बुलाया जाता है scrollViewDidScroll: को लागू करने और अंत

+0

कोड पहले से ही उस विधि में है, लेकिन मैं पहले ही हल कर चुका हूं, धन्यवाद! – lubilis

+1

ठीक है ... कृपया उल्लेख करें कि आपने अपना कोड 'scrollViewDidScroll:' में लिखा है, किसी भी भ्रम से बचने के लिए प्रतिनिधि – samfisher

3
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
    float bottomEdge = scrollView.contentOffset.y + scrollView.frame.size.height; 
    if (bottomEdge >= scrollView.contentSize.height) 
    { 
     // we are at the end 
    } 
} 
16

आप उन्हें तेजी में पता लगाने के लिए चाहते हैं:

override func scrollViewDidScroll(scrollView: UIScrollView) { 

if (scrollView.contentOffset.y >= (scrollView.contentSize.height - scrollView.frame.size.height)) { 
    //reach bottom 
} 

if (scrollView.contentOffset.y < 0){ 
    //reach top 
} 

if (scrollView.contentOffset.y >= 0 && scrollView.contentOffset.y < (scrollView.contentSize.height - scrollView.frame.size.height)){ 
    //not top and not bottom 
}} 
0

कभी-कभी आप हालत में +1 का उपयोग करने क्योंकि contentSize.height आप कुछ दशमलव अधिक देता है, होगा, इसलिए यदि आप का उपयोग करें इस, आप इसे से बचने ...

override func scrollViewDidScroll(scrollView: UIScrollView) { 

    if (scrollView.contentOffset.y + 1) >= (scrollView.contentSize.height - scrollView.frame.size.height) { 
     //bottom reached 
    } 
}