IOS 滾動視圖的代理方法

- scrollViewDidEndDragging: willDecelerate:

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

當有拽的行為的時候,會觸發。觸發時機:手指按住屏幕滑動scrollView,然后手指離開屏幕的時候,觸發。

decelerate:

  • 當你滑動scrollView,然后手指離開屏幕,只要scrollView還能自行滾動一段時間,那么 decelerate= 1

  • 當手指按住scrollView,快速或者慢速的滑動,手指始終不離開屏幕,手指滑動多少,scrollView就滾動多少,完全跟手。 那么此時手指離開屏幕后scrollView是禁止的,不會再自行滾動,那么decelerate= 0

- scrollViewDidEndDecelerating:

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"%s",__FUNCTION__);
}

當減速結速的時候,會觸發。觸發時機:當手指離開屏幕后,scrollView仍然在自行滾動,停止后,會觸發這個方法。

特殊場景:

有一個場景, 當你快速滑動scrollView, 然后手指離開屏幕, 此時decelerate = 1。 然后在scrollView還在滑動的過程中時手指按住scrollView讓其停止,scrollView表現是立即停止滾動,此時手指離開屏幕, 會再次回調decelerate = 0,同時回調scrollViewDidEndDecelerating

所以我們一般這么寫:

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    if (!decelerate) {
        NSLog(@"這個方法加decelerate判斷,只是處理scrollView跟著手指滑動而滑動,手指離開屏幕就停止的情況");
    }
}

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"這個方法用來處理用戶手指離開屏幕,scrollView仍然滾動,然后停止的情況");
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容