MMDrawerController无法关闭抽屉

时间:2014-11-22 15:38:39

标签: ios swift mmdrawercontroller

我正在尝试在我的应用程序中使用MMDrawerController,但我无法通过中心视图上的手势关闭侧抽屉。我已经在我的应用程序中的其他地方使用了MMDrawerController并取得了巨大成功,但无法弄清楚为什么它在这种情况下不起作用。

顶级View Controller是一个UINavigationController,其默认视图控制器是MasterViewController(下面的源代码)。这个类扩展了MMDrawerController,并根据我的需要配置视图(中心和右边,关闭手势,最大宽度)。中央视图有一个打开抽屉的按钮。抽屉打开后,我无法通过中央视图上的手势将其关闭。我在抽屉上添加了一个按钮,它可以通过编程方式关闭抽屉,但我需要能够在中心视图上进行制表/平移。

类MasterViewController:MMDrawerController {

override func viewDidLoad() {
    let centerView = storyboard!.instantiateViewControllerWithIdentifier("CenterControllerName") as? CenterControllerType
    super.setCenterViewController(centerView, withCloseAnimation: false, completion: nil)
    let drawer = storyboard!.instantiateViewControllerWithIdentifier("Drawer") as? DrawerType
    super.rightDrawerViewController = drawer
    super.setMaximumRightDrawerWidth(200, animated: true, completion: nil)
    super.closeDrawerGestureModeMask = MMCloseDrawerGestureMode.PanningCenterView | MMCloseDrawerGestureMode.TapCenterView
}

}

打开抽屉的功能:

@IBAction func drawerButtonPressed(sender: AnyObject) {
    drawer?.openDrawerSide(MMDrawerSide.Right, animated: true, completion: nil)
}

2 个答案:

答案 0 :(得分:0)

通过将ContainerView作为我视图中唯一的对象,然后从我的ViewController配置MMDrawerContainer,我能够解决这个问题。它似乎不是正确的答案,但从用户的角度来看,一切都看起来和功能正常。

答案 1 :(得分:0)

好的,所以我遇到了同样的问题,我几乎可以肯定它来自于此:

guddrawing.png

好的,VC1(带星号)是我们的应用程序Home,VC2是左抽屉,VC3是DrawerController。

很长一段时间我试图将手势功能放在VC1和VC2中,但只在VC1中打开,关闭VC2就行了。 我在VC1中使用的函数:

let rightSwipe = UISwipeGestureRecognizer(target: self, action: Selector("showDrawer:"))

rightSwipe.direction = .Right
view.addGestureRecognizer(rightSwipe)

...

  func showDrawer(sender: UISwipeGestureRecognizer) {
    if let m = mmdc {
      if !m.isLeftDrawerOpen() {
        m.toggleDrawerSide(MMDrawerSide.Left, animated: true, completion: nil)
      }
    }
  }

与VC2相同但使用LeftSwipe和closeDrawer。

解决方案是将这些功能和手势识别器都放在VC3(DrawerController)中。

问题来自这样一个事实:您的手势是为给定的VC定义的,但是当您打开抽屉时,它会将当前的VC更改为新的VC,并且之前的VC仅显示但不能显示与...互动。通过将东西放在VC1 / VC2的parentVC中,它可以解决问题。