IOS 滚动视图的代理方法

2019-07-17  本文已影响0人  _既白_

- scrollViewDidEndDragging: willDecelerate:

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

当有拽的行为的时候,会触发。触发时机:手指按住屏幕滑动scrollView,然后手指离开屏幕的时候,触发。

decelerate:

- 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仍然滚动,然后停止的情况");
}
上一篇 下一篇

猜你喜欢

热点阅读