SWRevealViewController panGesture 问题 - IOS/Swift

SWRevealViewController panGesture issue - IOS/Swift

在我的应用程序中,我使用 SWRevealViewController 来实现侧边菜单。在那里,出于某种原因,我不得不在显示视图控制器之前放置一个嵌入导航控制器的视图。

这是我的故事板

除一件事外,一切正常。当我在主视图上从屏幕的左侧边缘拖动到右侧(平移手势)时,它会将我导航到上一个视图(在本例中为中间视图,中间包含一个按钮),而不是侧面菜单.

这是拖动时的样子

我想避免这种情况并在那样拖动时获得侧边菜单。有人可以帮我解决这个问题吗?任何帮助将不胜感激。

编辑:

这是front_view和rear_view

您需要从您不想使用滑动手势的任何视图控制器中的导航控制器中删除 popGesture:

  var gestureRecognizer: UIGestureRecognizer? {
    guard let nc = navigationController else { return nil }
    return nc.interactivePopGestureRecognizer
  }

  override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    if let gr = gestureRecognizer {
      gr.isEnabled = false
    }
  }

为初始 ViewController 按钮取一个 ViewController.swift 文件。

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        self.navigationController?.interactivePopGestureRecognizer?.isEnabled = false

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destinationViewController.
        // Pass the selected object to the new view controller.
    }
    */

}

swrevealviewcontroller 实现没有问题,但导航控制器的本机行为导致了这个问题。