1

I created a side menu using a container view. It slides in the main view each time i press a menu. You can find my project here: https://github.com/marybnq/side-menu

I need to dismiss it by tapping anywhere in the mainVC. How do I do it?

2 Answers2

3

Try this:

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!)
    }

}

}
JVS
  • 2,592
  • 3
  • 19
  • 31
1

Simple:
1. Add tap gesture to view of mainVC and disable it by default
2. Enable tap gesture on showing side menu, to handle taps
3. Disable tap gesture on hiding side menu