集合视图拖放延迟

tim*_*man 2 drag-and-drop ios uicollectionview

有没有办法调整从集合视图单元格开始拖动所需的时间?类似于UILongPressGestureRecognizer minimumPressDuration财产。

我知道我们可以遍历附加到视图的所有手势识别器,并可能找到我们需要的那个。但是这种方法感觉不可靠。

tim*_*man 11

由于没有更好的解决方案,我仍然使用“迭代手势识别器”方法。

代码如下:

gestureRecognizers?.forEach { (recognizer) in
    if let longPressRecognizer = recognizer as? UILongPressGestureRecognizer {
        longPressRecognizer.minimumPressDuration = Constants.DragLongPressMinimumDuration
    }
}
Run Code Online (Sandbox Code Playgroud)

Constants.DragLongPressMinimumDurationDouble定义Constants结构。

重要说明:设置拖放后,在集合视图本身(而不是单元格)上执行此操作。

解决方案适用于 iOS 版本 11 和 12。

当然,这是使用私有 API 的边缘,该识别器的实际类是_UIDragLiftGestureRecognizer(它是私有 API 和UILongPressGestureRecognizer子类的一部分)。但是由于我们将其转换为UILongPressGestureRecognizer,因此从技术上讲,我们没有使用私有 API。