【问题标题】:SWRevealViewController panGesture issue - IOS/SwiftSWRevealViewController panGesture 问题 - IOS/Swift
【发布时间】:2017-07-11 12:06:21
【问题描述】:

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

这是我的故事板

除了一件事之外,一切都很好。当我在主视图上从屏幕的左边缘拖动到右侧(平移手势)时,它会导航到上一个视图而不是侧边菜单(在这种情况下是中间视图,其中包含中间的按钮) .

这是拖动时的样子

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

编辑:

这是前视图和后视图

【问题讨论】:

  • 你能告诉我storyboard中的哪个场景是rear_view和front_view吗?
  • @nikdange_me 实际上它们不在图像中。等等,我会编辑我的问题
  • 兄弟,一旦解决方案有效,您需要接受答案,否则人们将停止回复您的问题
  • @JenJose 等等兄弟。出现了一些事情。将尝试这些并接受正确的。感谢您的回答顺便说一句
  • 好的!只要你言出必行就没有问题!快乐编码!

标签: ios swift uinavigationcontroller uipangesturerecognizer swrevealviewcontroller


【解决方案1】:

为具有按钮的初始 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 实现中没有问题,但导航控制器的本机行为导致了此问题。

【讨论】:

  • UINavigationControllerDelegate 不是必需的。是吗?
  • 不,它不是必需的。请删除它
  • 无论如何,感谢您的帮助。这很简单而且很有效。干杯
【解决方案2】:

您需要在您不想使用滑动手势的任何视图控制器中从导航控制器中删除 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
    }
  }

【讨论】:

  • 感谢@DJSK 的帮助。
猜你喜欢
  • 2019-01-09
  • 2016-04-15
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 1970-01-01
相关资源
最近更新 更多