This is my code and works for me.
Swift 3
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) let menuPressRecognizer = UITapGestureRecognizer() menuPressRecognizer.addTarget(self, action: #selector(YourViewController.menuButtonAction(recognizer:))) menuPressRecognizer.allowedPressTypes = [NSNumber(value: UIPressType.menu.rawValue)] self.view.addGestureRecognizer(menuPressRecognizer) } func menuButtonAction(recognizer:UITapGestureRecognizer) { self.dismiss(animated: true, completion: nil) }
Swift 4
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) let menuPressRecognizer = UITapGestureRecognizer() menuPressRecognizer.addTarget(self, action: #selector(YourViewController.menuButtonAction(recognizer:))) menuPressRecognizer.allowedPressTypes = [NSNumber(value: UIPressType.menu.rawValue)] self.view.addGestureRecognizer(menuPressRecognizer) } @objc func menuButtonAction(recognizer:UITapGestureRecognizer) { self.dismiss(animated: true, completion: nil) }
Swift 4.2 & 5
override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) let menuPressRecognizer = UITapGestureRecognizer() menuPressRecognizer.addTarget(self, action: #selector(YourViewController.menuButtonAction(recognizer:))) menuPressRecognizer.allowedPressTypes = [NSNumber(value: UIPress.PressType.menu.rawValue)] self.view.addGestureRecognizer(menuPressRecognizer) } @objc func menuButtonAction(recognizer:UITapGestureRecognizer) { self.dismiss(animated: true, completion: nil) }
source share