2013-05-29 24 views
-1

我發現一個帖子在這裏簡要介紹如何判斷一個UIScrollView已完成滾動How to know exactly when a UIScrollView's scrolling has stopped?。它使用scrollViewDidEndDragging函數和作爲UIScrollView的文檔中指定的與上述文章中提到,在willDecelerate:(BOOL)減速參數當滾動停止訴說。但是,我似乎仍不能得到這個代碼片段的工作:IOS問題告訴當滾動查看已經完成

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{ 
    NSLog(@"%d", decelerate); 

    if (!decelerate) 
    { 
     isScrolling = NO; 
    } 

    isScrolling = YES; 
} 

我確認功能被用的NSLog執行,但即使我放手,滾動完成減速仍然等於1 。 爲什麼是這樣?停止拖動後

回答

1

-scrollViewDidEndDragging:willDecelerate:被調用,但是當視圖停止滾動這並不一定。如果您想知道視圖何時停止移動,請使用-scrollViewDidEndDecelerating:-scrollViewDidEndScrollingAnimation:

如果你只是想知道滾動視圖是否正在滾動,它可能是更好的要求,而不是試圖跟蹤它啓動時和當它停止滾動視圖本身。如果滾動視圖正在滾動,則可能是因爲用戶正在進行拖動,或者由於拖動後滾動視圖正在減速。您可以輕鬆地(在一個類別)的方法添加到UIScrollView,檢查這兩方面的條件:

@interface UIScrollView (Scrolling) 
- (BOOL)scrolling; 
@end 

@implementation UIScrollView (Scrolling) 
- (BOOL)scrolling 
{ 
    return (self.dragging || self.decelerating); 
} 
@end 
+0

真棒,有沒有辦法告訴當滾動開始,所以我可以設置isScrolling爲YES?這是用scrollViewDidScroll方法處理的嗎? @Caleb – ScottOBot

+0

有一個'... didEnd ...'方法,通常也有'... willBegin ...'方法。看看'UIScrollViewDelegate'的文檔。 – Caleb

+0

謝謝,我結束了使用 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView。 – ScottOBot