UIScrollview滑动的状态可以通过- (void)scrollViewDidScroll:(UIScrollView *)scrollView; 这个代理来实时获取UIScrollview任何时候的偏移量,但是这个方法并不能很好的获取UIScrollview滑动的方向(向上滑动或者向下滑动),不过也可以用一个全局变量来记录下每次滑动的偏移量,然后比较值的大小判断。但是通过监听UIScrollview值的变化可以很轻松的判断滑动方向。 1、首先注册监听self.tableView 值的变化 [self.tableView addObserver:self forKeyPath:NSStringFromSelector(@selector(contentOffset)) options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:&HHHorizontalPagingViewScrollContext];
2、实现监听(比较新旧值的大小判断滑动方向)
pragma mark - Observer
-
(void)observeValueForKeyPath:(NSString )keyPath ofObject:(__unused id)object change:(NSDictionary )change context:(void *)context {
CGFloat oldOffsetY = [change[NSKeyValueChangeOldKey] CGPointValue].y; CGFloat newOffsetY = [change[NSKeyValueChangeNewKey] CGPointValue].y; CGFloat deltaY = newOffsetY - oldOffsetY; if(deltaY >= 0) { //向上滚动 }else { //向下滚动 }
}