如何仅在UILongPressGesture之后才启用UIPanGestureRecognizer?

时间:2017-07-31 01:56:18

标签: ios swift mobile gesture

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

1 个答案:

答案 0 :(得分:0)

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

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

或者您可以将变量设置为Optional变量,其默认值为nil。但在那之后,你必须展开以获得真正的价值。

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

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

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

首先,您的平移手势已被禁用。长按后,您将禁用集合视图isScrollEnabled并启用平移手势。 (并且在完成平移手势后,您将禁用平移手势并重新启用集合视图isScrollEnabled