UIScrollView監聽靜止的數種狀況

1.直接經過block動畫

-(void)testInBlock
{
    //經過block監聽
    [UIView animateWithDuration:1.0 animations:^{
        self.scrollView.contentOffset = CGPointMake(50, 20);
    } completion:^(BOOL finished) {
        NSLog(@"滾動完畢");
    }];
}

2.代理中的 scrollViewDidEndScrollingAnimation:方法
觸發條件:使用setContentOffset:animated:或者scrollRectToVisible:animated:方法讓scrollView產生滾動動畫代理

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
    NSLog(@"靜止-[使用setContentOffset:animated:或者scrollRectToVisible:animated:方法讓scrollView產生滾動動畫, 最後靜止]");
}

3.代理中的scrollViewDidEndDecelerating:方法
觸發條件:人爲拖拽scrollView產生滾動動畫(手鬆開之後因爲慣性會繼續滾動)code

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"靜止-[手鬆開之後因爲慣性繼續滾動, 最後靜止]");
}

4.代理中的scrollViewDidEndDragging: willDecelerate:方法
decelerate爲YES : 手鬆開後會因爲慣性繼續滾動;NO : 手鬆開後當即靜止animation

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    if (decelerate) {
        NSLog(@"手鬆開後因爲慣性繼續滾動");
    } else { // 手鬆開後當即靜止
        NSLog(@"靜止-[手鬆開後當即靜止]");
        [self afterIdle];
    }
}
相關文章
相關標籤/搜索