2013-01-21 151 views
0

我想在scrollview完成滾動時執行一些操作,所以我在scrollViewDidEndScrollingAnimation委託方法中寫了那個acton。當rect不可見並且scrollview滾動到新的矩形時它工作正常。但是,當rect已經可見時,scrollViewDidEndScrollingAnimation方法將不會被調用,因此scrollViewDidEndScrollingAnimation中寫入的方法將不會被調用。但我想調用該操作,任何人都可以知道如何在scrollview完成滾動時調用該方法?scrollViewDidEndScrollingAnimation沒有被調用

在此先感謝!

回答

3

我認爲這一個會吸引一些人。實際發生的情況是隻有在明確調用setContentOffset:animated:scrollRectToVisible:animated:方法時纔會調用scrollViewDidEndScrollingAnimation

作爲UIScrollViewDelegate Protocol Reference狀態:

討論
滾動視圖調用此方法在其setContentOffset的 實現的端:動畫:和 scrollRectToVisible:動畫:方法,但只如果動畫是 請求

那該怎麼辦?那麼,我們不要忘記,滾動視圖中內容數據的偏移通常不是動畫。相反,這是不斷更新價值的結果。因此,您可能會使用scrollViewDidScroll:委託方法根據特定的contentOffset觸發您的方法。

另外,如果是每個滾動手勢之後進行 - 特別是私人UIScrollViewPanGestureRecognizer之後 - 那麼你可以做它scrollViewDidEndDecelerating:

討論
滾動視圖調用此方法當滾動 運動停止時。 UIScrollView 的減速屬性控制減速。

0

同時實現scrollViewDidEndDecelerating:scrollViewDidEndDragging:

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{ 
    // User lifted finger while scrolling 
    [self doPostScrollAction]; 
} 

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 
{ 
    if(!decelerate) 
    { 
     // User lifted finger after stopping scrolling 
     [self doPostScrollAction]; 
    } 
} 
相關問題