使用屏幕边缘平移手势识别器的弹出视图控制器不遵循拇指

时间:2016-06-28 09:53:19

标签: swift cocoa-touch uinavigationcontroller uigesturerecognizer

一旦我添加了自定义栏导航栏按钮项,我就失去了使用默认功能返回的功能。我希望能够使用“从边缘滑动”返回。

我添加了Edge Pan手势识别器并将其连接到@IBAction,但只要识别了平移手势,解雇操作就会完全发生。

而不是慢慢地跟着我的拇指(如在其他应用程序中看到的那样),当前视图会移出预定义的动画。

如何使用Edge Pan Gesture Recogniser按照我的拇指制作动画?

@IBAction func edgeSwipe(sender: AnyObject) {
    navigationController?.popViewControllerAnimated(true)
}

enter image description here

1 个答案:

答案 0 :(得分:6)

无需添加Edge Pan手势识别器。按照@beyowulf的建议,我已经能够实现滑动返回功能,其行为与默认系统实现相同 - 视图边缘跟随我的拇指,因为我滑动它以解除它。

所以我从故事板中删除了ScreenEdge Pan Gesture Recogniser,并删除了相关的@IBAction

我已将第一个视图控制器作为interactivePopGestureRecognizer的委托。这是代码:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        navigationController?.interactivePopGestureRecognizer?.delegate = self
    }
}

extension ViewController: UIGestureRecognizerDelegate {

    func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
        return navigationController?.viewControllers.count > 1 ? true : false
    }
}