- 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仍然滚动,然后停止的情况");
}
网友评论