【问题标题】:Stop CollectionView from scrolling during interaction在交互期间停止 CollectionView 滚动
【发布时间】:2021-12-12 02:13:54
【问题描述】:

如果速度太低,我正在尝试阻止 UICollectionView 滚动。

使用委托方法:

func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

我尝试了许多不同的方法,但似乎没有什么能阻止滚动视图。我尝试过以下组合:

        scrollView.layer.removeAllAnimations()
        scrollView.isScrollEnabled = false
        scrollView.layoutIfNeeded()

【问题讨论】:

  • 不太清楚您要做什么...如果用户快速拖动,但在抬起手指之前放慢了速度,您是否希望立即停止滚动?或者,您的意思是如果用户缓慢拖动,它根本不应该滚动?

标签: ios swift uicollectionview uiscrollview


【解决方案1】:

您可以将当前的contentOffset 设置为目标偏移量。

targetContentOffset.pointee = scrollView.contentOffset

【讨论】:

  • 不确定如何在委托方法参数中设置 let 常量?你能解释更多吗?
  • @BuyinBrian targetContentOffset 是一个指向实际目标内容偏移量的指针。指针本身是不可变的,但它指向的值是。您可以通过pointee 属性访问此值,然后对其进行变异。
  • Swift 中有多种指针类型,UnsafeMutablePointer,顾名思义,允许你改变它所指向的值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 2019-10-13
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多