- 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仍然滾動,然后停止的情況");
}