如何检测 UITableView 仅在 iOS 中向下滚动?

Posted

技术标签:

【中文标题】如何检测 UITableView 仅在 iOS 中向下滚动?【英文标题】:How to detect UITableView scrolling down only in iOS? 【发布时间】:2014-02-08 09:39:16 【问题描述】:

现在我可以使用以下代码检测UITableView 上下滚动。

但是我只想在向下滚动时触发事件。不包括上滚动。

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate 中使用这些代码

NSInteger currentOffset = scrollView.contentOffset.y;
    NSInteger maximumOffset = scrollView.contentSize.height - scrollView.frame.size.height;

if (maximumOffset - currentOffset <= 20.0) 
        //        [self methodThatAddsDataAndReloadsTableView];

如何仅检测UITableView 中向下滚动到底部。

【问题讨论】:

【参考方案1】:

当拖动结束时,您可以将当前contentOffset 与目标contentOffset 进行比较。或查看scrolling速度标志:

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView 
                     withVelocity:(CGPoint)velocity 
              targetContentOffset:(inout CGPoint *)targetContentOffset 
    NSLog(@"%@", scrollView.contentOffset.y > targetContentOffset->y ? @"top" : @"bottom");
    NSLog(@"%@", velocity.y > 0 ? @"bottom" : @"top");

【讨论】:

以上是关于如何检测 UITableView 仅在 iOS 中向下滚动?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 和 Android 的给定时间检测用户是不是仅在一台设备上处于活动状态

iOS UITableView reloadData 仅在我第二次调用我的 reload 函数时刷新表

UITableView 仅在第一次运行时以正确的顺序显示行

为啥我的 iOS 应用程序仅在首次运行时正确检测到当前语言?

iOS如何去除UITableView底部多余的分割线

如何使用 Swift 在 iOS 中检测多行键盘粘贴事件?