Swift 点击任意位置取消侧菜单

Swift 点击任意位置取消侧菜单,swift,view,dismiss,side-menu,Swift,View,Dismiss,Side Menu,我使用容器视图创建了一个侧菜单。每次我按下菜单时,它都会在主视图中滑动。 您可以在此处找到我的项目: 我需要通过点击mainVC中的任何地方来消除它。 我该怎么做?简单: 1.将点击手势添加到mainVC的视图中,并在默认情况下禁用它 2.在显示侧菜单上启用点击手势,以处理点击 3.禁用隐藏侧菜单上的点击手势简单: 1.将点击手势添加到mainVC的视图中,并在默认情况下禁用它 2.在显示侧菜单上启用点击手势,以处理点击 3.禁用隐藏侧菜单上的点击手势尝试以下操作: class FirstVi

我使用容器视图创建了一个侧菜单。每次我按下菜单时,它都会在主视图中滑动。 您可以在此处找到我的项目:

我需要通过点击mainVC中的任何地方来消除它。 我该怎么做?

简单: 1.将点击手势添加到mainVC的视图中,并在默认情况下禁用它 2.在显示侧菜单上启用点击手势,以处理点击 3.禁用隐藏侧菜单上的点击手势

简单: 1.将点击手势添加到mainVC的视图中,并在默认情况下禁用它 2.在显示侧菜单上启用点击手势,以处理点击 3.禁用隐藏侧菜单上的点击手势

尝试以下操作:

class FirstViewController: UIViewController {

@IBOutlet weak var menuConstraint: NSLayoutConstraint!

var sideMenuOpen = false
var gesture : UITapGestureRecognizer?


override func viewDidLoad() {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self,
                                           selector: #selector(toggleSideMenu), name: NSNotification.Name("ToggleSideMenu"), object: nil)


    gesture = UITapGestureRecognizer(target: self, action: #selector(FirstViewController.toggleSideMenu))

}
@objc func toggleSideMenu() {
    if sideMenuOpen {
        sideMenuOpen = false
        menuConstraint.constant = -240
        self.view.removeGestureRecognizer(gesture!)
    } else {
        sideMenuOpen = true
        menuConstraint.constant = 0
        self.view.addGestureRecognizer(gesture!)
    }

}

}
试试这个:

class FirstViewController: UIViewController {

@IBOutlet weak var menuConstraint: NSLayoutConstraint!

var sideMenuOpen = false
var gesture : UITapGestureRecognizer?


override func viewDidLoad() {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self,
                                           selector: #selector(toggleSideMenu), name: NSNotification.Name("ToggleSideMenu"), object: nil)


    gesture = UITapGestureRecognizer(target: self, action: #selector(FirstViewController.toggleSideMenu))

}
@objc func toggleSideMenu() {
    if sideMenuOpen {
        sideMenuOpen = false
        menuConstraint.constant = -240
        self.view.removeGestureRecognizer(gesture!)
    } else {
        sideMenuOpen = true
        menuConstraint.constant = 0
        self.view.addGestureRecognizer(gesture!)
    }

}

}

您可以使用轻触手势,并在轻触mainVc时检查侧路障的变化常数。现在,您可以通过单击菜单-正确吗?@JVS yes,为什么??@OmerTekbiyik是的,但我应该在vc之间传递数据,我不确定如何将sideMenuConstraint传递给另一个vc。您可以使用轻触手势,并在轻触mainVc时检查side barRight的更改常量。现在,您可以通过单击菜单来取消它-正确吗?@JVS是,为什么??@OmerTekbiyik是的,但我应该在vc之间传递数据,我不确定如何将sideMenuConstraint传递给另一个vcPerfect!如果我希望它在其他视图控制器中工作,该怎么办?我使用通知中心传递toggleSideMenu函数,但它没有添加手势。我从一开始就尝试创建项目,现在它工作正常,谢谢!完美的如果我希望它在其他视图控制器中工作,该怎么办?我使用通知中心传递toggleSideMenu函数,但它没有添加手势。我从一开始就尝试创建项目,现在它工作正常,谢谢!