UITableView和UIScrollView滚动方向的判断

1、首先为UITableView添加观察者

[tableView addObserver: self forKeyPath: @"contentOffset" options: NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context: nil];

2、在KVO中,根据UITableView对象的相关属性,完成UITableView滚动方向的判断

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
    if ([object isKindOfClass: [UITableView class]]) {
        CGPoint newPoint = [change[@"new"] CGPointValue];
        CGPoint oldPoint = [change[@"old"] CGPointValue];
        CGFloat newPointY = newPoint.y;
        CGFloat oldPointY = oldPoint.y;
        CGFloat frameHeight = ((UITableView *)object).frame.size.height;
        CGFloat contentSizeHeight = ((UITableView *)object).contentSize.height;

        //  这个地方把contentSizeHeight强制转为long类型很重要,因为本身它是CGFloat类型,所以可能会带有浮点数
        // 一般我们在做表格的时候,实际上正数居多,为什么用long而不是int,主要是表示的整数范围会更大
        if ((newPointY < oldPointY && (frameHeight + newPointY) < (long)contentSizeHeight) || newPointY < 0 || oldPointY < 0) {
            if (newPointY <= 0 || oldPointY <= 0) {
                NSLog(@"top");
            } else {
                NSLog(@"scroll down");
            }
        } else if (newPointY > oldPointY) {
            if ((frameHeight + newPointY >= contentSizeHeight)) {
                NSLog(@"bottom");
            } else {
                NSLog(@"scroll up");
            }
        }
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,392评论 30 472
  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,966评论 1 180
  • 天色在一点点地变暗。 无论内心有多么的不舍,表面又装作多么的淡然。 一种失去的遗憾始终蔓延心间,还有无法将时光的流...
    夕瑶_4067阅读 3,157评论 0 0
  • 又是一场雨把我的思绪带到往昔, 往昔那段有你的回忆。 粉红色的蝴蝶结萦绕着我的牵挂 和你的发髻。 我把双手融入你的...
    那个诗人阅读 1,018评论 0 0
  • 如果有人问我,你觉得爱情是什么?我想我会这样回答,好的爱情就是,即便你一个人也能把生活经营得风生水起,但是当他出现...
    南瓜不说话zws阅读 1,342评论 0 0

友情链接更多精彩内容