【问题标题】:Dismissing side menu by tapping anywhere通过点击任意位置关闭侧边菜单
【发布时间】:2019-06-30 22:53:43
【问题描述】:

我使用容器视图创建了一个侧边菜单。每次按菜单时,它都会在主视图中滑动。 你可以在这里找到我的项目: https://github.com/marybnq/side-menu

我需要通过点击 mainVC 中的任意位置来关闭它。 我该怎么做?

【问题讨论】:

  • 您可以使用 TapGestures 并检查何时点击 mainVc 更改侧边栏的常量
  • 现在您可以通过单击菜单将其关闭 - 对吗?
  • @JVS 是的,为什么???
  • @OmerTekbiyik 是的,但我应该在 vc 之间传递数据,但我不确定如何将 sideMenuConstraint 传递给另一个 vc

标签: swift view dismiss side-menu


【解决方案1】:

试试这个:

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

}

}

【讨论】:

  • 完美!如果我想让它在其他视图控制器中工作怎么办?我使用通知中心传递了 toggleSideMenu 功能,但它没有添加手势
  • 我尝试从一开始就创建项目,现在它工作正常,谢谢!
【解决方案2】:

简单:
1.在mainVC视图中添加点击手势,默认禁用
2.在显示侧边菜单时启用点击手势,以处理点击
3. 隐藏侧边菜单禁用点击手势

【讨论】:

    猜你喜欢
    • 2014-12-25
    • 2019-06-22
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多