
image.png
scrollViewDidEndDecelerating 和 scrollViewDidEndDragging 是 UIScrollViewDelegate 協(xié)議中的兩個方法,它們在 UIScrollView 滾動行為方面發(fā)揮不同作用。以下是這兩個方法的區(qū)別:
1. scrollViewDidEndDecelerating:
此方法在 UIScrollView 減速完成并完全停止?jié)L動后調(diào)用。這里所指的減速是指當用戶快速滑動 UIScrollView 以產(chǎn)生慣性滾動效果時發(fā)生的減速過程。當 UIScrollView 速度減為零時,scrollViewDidEndDecelerating 會被觸發(fā)。
2. scrollViewDidEndDragging:willDecelerate:
此方法在用戶手指從 UIScrollView 上抬起(即停止拖動)時調(diào)用。willDecelerate: 參數(shù)表示 UIScrollView 在停止拖動后是否還將繼續(xù)減速。
- 如果
willDecelerate:為true,則表示在用戶停止拖動后,UIScrollView 仍然具有足夠的速度以產(chǎn)生減速效果,在減速結(jié)束時會調(diào)用scrollViewDidEndDecelerating。 - 如果
willDecelerate:為false,則表示在用戶停止拖動后,UIScrollView 直接停止?jié)L動,而不再觸發(fā)其他事件。
總結(jié)一下: -
scrollViewDidEndDragging:willDecelerate:處理的是用戶停止拖動 UIScrollView 的事件。 -
scrollViewDidEndDecelerating處理的是 UIScrollView 在自然減速并最終停止?jié)L動的事件。
通常,如果您希望在 UIScrollView 完全停止?jié)L動時執(zhí)行某些操作,可以通過在scrollViewDidEndDragging:willDecelerate:方法中檢查willDecelerate:參數(shù)為false,以及實現(xiàn)scrollViewDidEndDecelerating方法,來確保覆蓋所有情況。