监听UIScrollView TableView上下滑动 停止

紧张工作的同时偷个懒, 写一下监听UIScrollView上下滑动和停止.

  • 话不多说 上代码
@interface YCXTestViewController () <UITableViewDelegate, UITableViewDataSource>
@property (nonatomic,strong) UITableView *tableView;
@property (nonatomic,assign) CGFloat lastContentOffset; // 记录最后偏移量
@property (nonatomic,assign) CGFloat isUpScrolling; // 防止多次调用
@end

@implementation YCXTestViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view addSubview:self.tableView];
}
// ---scrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.y < self.lastContentOffset ){
        //向下
        if (self.isUpScrolling) {
            NSLog(@"---下滑---");
            self.isUpScrolling = NO;
        }
    } else if (scrollView.contentOffset.y > self.lastContentOffset ){
        //向上
        if (!self.isUpScrolling) {
            NSLog(@"---上滑---");
            self.isUpScrolling = YES;
        }
    }
    self.lastContentOffset = scrollView.contentOffset.y;
}

- (void)scrollViewDidEndScroll {
    self.isUpScrolling = NO; // 恢复初始值
    NSLog(@"---停止---");
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    if (!decelerate) {
        if (!scrollView.dragging && !scrollView.decelerating) {
            [self scrollViewDidEndScroll];
        }
    }
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    if (!scrollView.dragging && !scrollView.decelerating) {
        [self scrollViewDidEndScroll];
    }
}


- (UITableView *)tableView {
    if (!_tableView) {
        _tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
        _tableView.delegate = self;
        _tableView.dataSource = self;
        [_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:NSStringFromClass([UITableViewCell class])];
    }
    return _tableView;
}
// ---tableDelegate
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 100;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([UITableViewCell class]) forIndexPath:indexPath];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.textLabel.text = [NSString stringWithFormat:@"--%ld",indexPath.row];
    return cell;
}
@end