gpt4 book ai didi

ios - 在 UICollectionView 中取消主动拖动

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:32:24 26 4
gpt4 key购买 nike

我已经实现了 UICollectionViewDragDelegate 以允许用户拖放 Collection View 单元格。我还在每个单元格中添加了一个 UILongPressGestureRecognizer。长按单元格后,拖动交互在长按手势状态开始之前被识别。如果你拖动它,它会取消长按手势。这很好用。

但是为了让这两个一起玩得更好,当识别出长按手势时(state == .began)我想以编程方式取消正在进行的拖动 session - 就像用户一样取消它释放他们的手指导致单元格不再被拖动,而是继续识别长按手势。否则,拖动和长按 Action 都会被激活,这在我的情况下效果不佳——需要一次激活一个或另一个。怎么办?

请注意,如果您继续长按单元格而不拖动,则拖动将在大约 2 秒后取消。我只想在识别到长按手势后立即取消它,这样用户就不必等待。

UICollectionView 有一个属性 hasActiveDrag 来指示该状态,但我没有看到取消它的方法。我确实尝试将 dragInteractionEnabled 设置为 false 然后再次设置为 true 希望能取消它但它仍然处于事件状态。我什至尝试在被拖动的索引路径处重新加载单元格,但这也没有取消它。

我整理了一些 Sample Project你可以跑过去看看这里发生了什么。

最佳答案

如果您查看 Collection View 上的识别器,您会发现 _UIDragLiftGestureRecognizer可用于通过设置 enabled = NO 来取消拖放识别。 .

关于ios - 在 UICollectionView 中取消主动拖动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45179543/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com