1.直接经过block动画
-(void)testInBlock { //经过block监听 [UIView animateWithDuration:1.0 animations:^{ self.scrollView.contentOffset = CGPointMake(50, 20); } completion:^(BOOL finished) { NSLog(@"滚动完毕"); }]; }
2.代理中的 scrollViewDidEndScrollingAnimation:
方法
触发条件:使用setContentOffset:animated:或者scrollRectToVisible:animated:方法让scrollView产生滚动动画代理
-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { NSLog(@"静止-[使用setContentOffset:animated:或者scrollRectToVisible:animated:方法让scrollView产生滚动动画, 最后静止]"); }
3.代理中的scrollViewDidEndDecelerating:
方法
触发条件:人为拖拽scrollView产生滚动动画(手松开之后因为惯性会继续滚动)code
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { NSLog(@"静止-[手松开之后因为惯性继续滚动, 最后静止]"); }
4.代理中的scrollViewDidEndDragging: willDecelerate:
方法
decelerate为YES : 手松开后会因为惯性继续滚动;NO : 手松开后当即静止animation
-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { if (decelerate) { NSLog(@"手松开后因为惯性继续滚动"); } else { // 手松开后当即静止 NSLog(@"静止-[手松开后当即静止]"); [self afterIdle]; } }