第一種方式:
float lastContentOffset; - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { lastContentOffset = scrollView.contentOffset.y; } - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView { if (lastContentOffset < scrollView.contentOffset.y){ NSLog(@"向上滾動"); }else{ NSLog(@"向下滾動");} }
這種方式基本上可以滿足需求,但是將scrollView滑到頂部或底部后連續拖拽拉動時會計算不准確
第二種方式:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGFloat yoffset = scrollView.contentOffset.y; CGPoint vel = [scrollView.panGestureRecognizer velocityInView:scrollView]; if (vel.y < -5) { //向上拖動 }else if (vel.y > 5) { //向下拖動 }else if (vel.y == 0) { //停止拖拽 } }
經過檢驗這種方式不會出現偏差
by:初光夫