2012-05-31 36 views
2

我需要一些幫助,我真的需要知道在執行一些編程生成的滾動之後將調用的UIScrollView委託方法。從this鏈接,我知道我必須努力實現在編程生成的滾動完成後調用的UIScrollview委託方法

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView

但之後,我實現它,從NSLog的,我知道,當滾動視圖已經完成這個方法並沒有所謂的的NSLog顯示,後稱這種委託方法,應用程序稱爲

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{ 

,然後再次呼籲scrollViewDidEndScrollingAnimation,回scrollViewDidScroll過很多次,直到滾動真的停下來,我需要一個布爾值設置爲真正做到程序生成的滾動之前,並且需要在滾動後將其錯誤化真的停止。有人能幫我弄清楚這個問題嗎?

這是我的示例代碼中,要做到這一點:

BOOL isScroll; 

- (void)viewDidLoad { 
    isScroll = YES; 
    [self generateScrollProgrammatically]; 
} 

- (void) generateScrollProgrammatically{ 
    //i do some code for scrolling uiscrollview programmatically 
} 

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

    if (isScroll){ 
     //do something 
    } 

} 

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{ 
    NSLog(@"scrollViewDidEndScrollingAnimation"); 
} 

在這裏,有人告訴我的NSLog:

2012-05-31 09:58:10.583 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.584 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.595 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.596 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.597 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.598 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.611 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.615 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.616 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.617 myApps[1203:fb03] scrollViewDidEndScrollingAnimation 
2012-05-31 09:58:10.631 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.632 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.633 myApps[1203:fb03] scrollViewDidEndScrollingAnimation 
2012-05-31 09:58:10.634 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.635 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.636 myApps[1203:fb03] scrollViewDidEndScrollingAnimation 
2012-05-31 09:58:10.636 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.637 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.638 myApps[1203:fb03] scrollViewDidEndScrollingAnimation 
2012-05-31 09:58:10.640 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.642 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.644 myApps[1203:fb03] scrollViewDidEndScrollingAnimation 
2012-05-31 09:58:10.644 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.645 myApps[1203:fb03] scrollViewDidScroll 
2012-05-31 09:58:10.646 myApps[1203:fb03] scrollViewDidEndScrollingAnimation 
+0

- (空)scrollViewDidEndDecelerating:(UIScrollView的*)滾動視圖使用此委託方法 – Tirth

+0

@iHungry它不工作,因爲我以編程方式生成滾動,而不用觸摸它滾動視圖 –

回答

1

是啊,這一點我也一樣。我能找到解決它的唯一方法是更換:

[scrollView setContentOffset:offset animated:YES]; 

有:

[UIView animateWithDuration:[[UIApplication sharedApplication] statusBarAnimationDuration] 
       animations:^{ scrollView.contentOffset = offset; } 
       completion:^{ [scrollView.delegate scrollViewDidEndScrollingAnimation:scrollView]; }]; 
+0

你用什麼方法取代它? –

+0

無論您採取什麼方法,您最初都會描述爲「某些程序化生成的卷軸」。上面的代碼假定你正在使用-setContentOffset:animated :.你不是嗎? – hatfinch

+0

不,我不使用它,但我想我知道我的代碼有什麼問題:) 謝謝你的回答:) –

相關問題