scrollViewDidEndDecelerating
和 scrollViewDidEndDragging
是 UIScrollViewDelegate
协议中的两个方法,它们在 UIScrollView 滚动行为方面发挥不同作用。以下是这两个方法的区别:
1. scrollViewDidEndDecelerating:
此方法在 UIScrollView 减速完成并完全停止滚动后调用。这里所指的减速是指当用户快速滑动 UIScrollView 以产生惯性滚动效果时发生的减速过程。当 UIScrollView 速度减为零时,scrollViewDidEndDecelerating
会被触发。
2. scrollViewDidEndDragging:willDecelerate:
此方法在用户手指从 UIScrollView 上抬起(即停止拖动)时调用。willDecelerate:
参数表示 UIScrollView 在停止拖动后是否还将继续减速。
- 如果
willDecelerate:
为true
,则表示在用户停止拖动后,UIScrollView 仍然具有足够的速度以产生减速效果,在减速结束时会调用scrollViewDidEndDecelerating
。 - 如果
willDecelerate:
为false
,则表示在用户停止拖动后,UIScrollView 直接停止滚动,而不再触发其他事件。
总结一下: -
scrollViewDidEndDragging:willDecelerate:
处理的是用户停止拖动 UIScrollView 的事件。 -
scrollViewDidEndDecelerating
处理的是 UIScrollView 在自然减速并最终停止滚动的事件。
通常,如果您希望在 UIScrollView 完全停止滚动时执行某些操作,可以通过在scrollViewDidEndDragging:willDecelerate:
方法中检查willDecelerate:
参数为false
,以及实现scrollViewDidEndDecelerating
方法,来确保覆盖所有情况。