有时候我们需要根据UIScrollView的滑动位置来做出相应的操作,比如很多日历中都有 month 日历同 week日历的切换,通过UIScrollView可以实现这样的效果,这时候通过判断手离开视图的那个瞬间就需要做出判断了,如果在手指离开屏幕的时候,UIScrollView没有在滑动,那么这时候就可以通过方法
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
if (!decelerate) {
}
}
这个时候 decelerate = NO, 也就是禁止状态,而如果 decelerate = YES, 那么这个时候如果设置 UIScrollView 强行滑动到某一个位置,那是没有效果的,这个时候,我们需要在其另外一个delegate方法之中进行设置:
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
if(velocity.y != 0) { // 具有一个速度,矢量,有正负值
CGFloat y = targetContentOffset->y;
}
}
如果其x或者y速度不为 0,那么就说明在手指离开屏幕之后,UIScrollView还会继续滑动,那么它会滑动多远呢? 这个就可以通过 targetContentOffset 确定,那么我们就可以根据 targetContentOffset的位置来做出判断,然后决定UIScrollView 最终需要停在哪个位置上。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
}
上面方法,滑动就会调用。
结合这三个方法,基本就可以准确的控制UIScrollView的滑动状态了