问题提出
以下两个方法哪个先被调用?
// 松手时已经静止,只会调用scrollViewDidEndDragging
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
if (decelerate == NO) { // scrollView已经完全静止
}
}
// 松手时还在运动, 先调用scrollViewDidEndDragging,在调用scrollViewDidEndDecelerating
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
// scrollView已经完全静止
}
//1.区别是在与拖动UIScrollView有没有对UIScrollView进行松手滑动一段距离。
<情况1>.如果轻轻地拖动UIScrollView,UIScrollView松手就停止运动。
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;//这个方法是不会被系统调用
相反,系统会调用这个方法
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;//会被系统调用
,而且decelerate == YES.
<情况2>如果用力地拖动UIScrollView,令到scrollView在视图上滚动一大段距离。
//结果是:这两个方法都会被调用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
//分析:调用的顺序如何呢?
实践所得:
先调用:decelerate == YES
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
当scrollView完全停止时,再调用
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;