切换UIGestureRecognizer中间手势的目标?

时间:2016-06-04 23:10:58

标签: ios swift uiscrollview uigesturerecognizer uipangesturerecognizer

我在ViewControllerA内有一个滚动视图。当用户在平移手势期间位于滚动视图的末尾时,它会自动转换为具有自己的滚动视图的ViewControllerB。这种转变很好。但是,在转换为ViewControllerB后,ViewControllerA的平移手势不再存在(因为现在我们位于ViewControllerB)。这需要用户抬起手指然后开始另一个平移手势来移动ViewControllerB的滚动视图。

我想要发生的是当用户平移到ViewControllerA的滚动视图的末尾时,它会在转换后继续滚动ViewControllerB的滚动视图,而无需用户抬起他们的手指仍然处于平移手势的中间。

我知道的一个问题是scrollviews有自己的无法设置的平移手势识别器。

我已尝试使用当前无效的委托的以下策略:

protocol MyPanGestureDelegate {
    func panInViewControllerB(gesture: UIPanGestureRecognizer)
}

class ViewControllerA: UIViewController {
    // ViewControllerB is assigned to 'gestureDelegate' below
    var gestureDelegate: MyPanGestureDelegate!

    override func viewDidLoad() {
        super.viewDidLoad()
        let panGesture = UIPanGestureRecognizer(target: self, action: #selector(panInViewControllerA(_:)))
        self.view.addGestureRecognizer(panGesture)

        gestureDelegate.panInViewControllerB(panGesture)
    }

}

class ViewControllerB: UIViewController, MyPanGestureDelegate, UIGestureRecognizerDelegate { 
    // 'myScrollView' is an IBOutlet for said scrollview
    func panInViewControllerB(panGesture: UIPanGestureRecognizer) {
        myScrollView.addGestureRecognizer(panGesture)
    }
}

// I've also set 'shouldRecognizeSimultaneouslyWithGestureRecognizer' to true

有没有办法在一个视图控制器中滚动滚动视图,转换到另一个视图控制器,并在一个平移手势中继续滚动另一个视图控制器中的滚动视图?

0 个答案:

没有答案