首页 > 代码库 > UI:DidEndDragging 和DidEndDecelerating以及DidScroll的区别

UI:DidEndDragging 和DidEndDecelerating以及DidScroll的区别

最近在写一个新闻app的界面,发现自己在学习上还存在一些问题,有的方法容易混淆,比如关于scrollView的滚动:


(1)-(void)scrollViewDidScroll:(UIScrollView *)scrollView

scrollView滚动时,就调用该方法。任何offset值改变都调用该方法。即滚动过程中,调用多次

默认是在scrollview拖动的时候会被调用,如果不执行的话 检查 scrollview.delegate = self;设置没设置,或者检查XIB中File‘s Owner。

这句在滑动scrollview的时候会执行多次 在调用这个方法进行处理时容易卡死,不好用。


(2)-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

 滚动视图减速完成,滚动将停止时,调用该方法。一次有效滑动,只执行一次。


(3)-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate

 滑动视图,当手指离开屏幕那一霎那,调用该方法。一次有效滑动,只执行一次。
 decelerate,指代,当我们手指离开那一瞬后,视图是否还将继续向前滚动(一段距离),经过测试,decelerate=YES


(2)和(3)的区别:

(别人的分析)看名字就不一样 第一个DidEndDragging 停止拖拽的时候开始执行

户手指离开 屏幕  将要加速 或者是不到减速的时候



DidEndDecelerating 减速停止的时候开始执行

也就是说 它俩执行的时间不一样 scrollview 先是执行 停止拖拽的代理 然后在执行减速停止的代理


UI:DidEndDragging 和DidEndDecelerating以及DidScroll的区别