【问题标题】:How to know that when the user swipe up / down?当用户向上/向下滑动时如何知道?
【发布时间】:2019-11-10 02:01:38
【问题描述】:

我的ViewController 中有UICollectionView(请查看下面的附图以了解视图层次结构)。我们如何检测用户何时向上或向下滑动?

我们是否将手势识别器添加到UIViewUICollectionView 都没有关系。我只想知道滑动手势。

我尝试通过在堆栈溢出中使用代码将手势识别器添加到UIViewUICollectionView。但是没有一个能满足我的要求。

提前致谢。

【问题讨论】:

  • 这太宽泛了。你都尝试了些什么?您遇到的具体障碍是什么?你遇到了什么错误?什么不工作?
  • 您不需要任何手势记录。集合视图继承了 UIScrollview,因此您可以将集合视图的委托设置为自己并实现 UIScrollViewDelegate 方法
  • @Andreas - 我尝试将 UISwipeGestureRecognizer() 添加到 UIView 和 UICollectionView。没有出现错误。但没有得到想要的结果。请参阅此链接以了解与此问题相关的问题-“** stackoverflow.com/questions/56787905/… **”
  • @PrashantTukadiya - 即使我按照你的建议做了。请参阅此链接以了解与我的问题相关的确切问题 - “** stackoverflow.com/questions/56787905/… **”
  • 有很多关于如何检测用户滚动滚动视图的方向的问题,例如thisthis。他们应该帮助/

标签: ios swift uiview uicollectionview uiswipegesturerecognizer


【解决方案1】:

由于collectionView基本上是scrollView,所以使用scrollViewDidScroll(_:)方法来识别collectionView的滚动方向。

private var lastContentOffset: CGFloat = 0.0

在上述代码中,lastContentOffset 在滚动时跟踪collectionView 的前一个contentOffset

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if (scrollView.contentOffset.y < self.lastContentOffset) {
        //Scrolling up
    }
    else if (scrollView.contentOffset.y > self.lastContentOffset) {
        //Scrolling down
    }
    self.lastContentOffset = scrollView.contentOffset.y
}

别忘了遵守UICollectionViewDelegate 协议。

此外,无需添加任何单独的gestureRecognizerUICollectionViewUIScrollView 将自行处理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    相关资源
    最近更新 更多