如何仅在 UILongPressGesture 之后启用 UIPanGestureRecognizer?

How do I only enable UIPanGestureRecognizer only after UILongPressGesture?

我是 swift 的新手,不确定这是否可行,但我 运行 遇到了一个问题,我在 UICollectionView 中,它启用了滚动。默认情况下,我只希望启用滚动。但是,如果用户保持足够长的时间,我希望禁用滚动并启用 UIPanGestureRecognizer。在 UILongPress 之后启用 UIPanGesture 时遇到问题。 pangesture 完成后,应再次启用滚动并禁用平移。

首先,编译器抱怨你的变量没有默认值。

您可以通过添加初始化方法并在其中设置手势来解决此问题。

或者您可以将变量设置为具有默认值 nilOptional 变量。但在那之后,你必须打开包装才能获得真正的价值。

或者如果你真的知道这是什么:

class YourViewController: xxxx, yyyy {
    lazy var panGesture: UIPanGestureRecognizer! = {
        let pan = UIPanGestureRecognizer(…
        pan.delegate = self
        return pan
    }
…
}

其次,您可以使用 UIGestureRecognizerDelegate 来提供帮助。


起初,您的平移手势是禁用的。长按后,您将禁用集合视图 isScrollEnabled 并启用平移手势。 (在平移手势完成后,禁用平移手势并重新启用集合视图 isScrollEnabled