Swift:SWReavealController 无法滑动以关闭菜单"only open with swipe"



这是使用SWRevealController的滑出菜单,它运行得很好,但是可以滑动打开但不能滑动关闭菜单

添加库后,我做了一些更改,但我确实知道问题在哪里。

这是主视图控制器

中的代码
  @IBOutlet weak var menuButton:UIBarButtonItem!
override func viewDidLoad() {
    super.viewDidLoad()

    if self.revealViewController() != nil {
        menuButton.target = self.revealViewController()
        menuButton.action = "revealToggle:"
        self.revealViewController().delegate = self
        self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
    }

    self.revealViewController().delegate = self
    var swl = self.revealViewController()

    if swl != nil
    {
        swl.panGestureRecognizer()
        swl.tapGestureRecognizer()
    }

}

@IBAction func but_back(sender: AnyObject) {
    self.navigationController?.interactivePopGestureRecognizer!.delegate = self
    self.navigationItem.leftBarButtonItem?.target=self.revealViewController()
    self.navigationItem.leftBarButtonItem?.action=Selector("revealToggle:")
    self.revealViewController().revealToggle(sender)
    self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
}

func revealController(revealController: SWRevealViewController!, willMoveToPosition position: FrontViewPosition)
{
    if position == FrontViewPosition.Left     // if it not statisfy try this --> if revealController.frontViewPosition == FrontViewPosition.Left
    {
        self.view.userInteractionEnabled = true
        revealController.panGestureRecognizer().enabled=true
    }
    else
    {
        self.view.userInteractionEnabled = false
        revealController.panGestureRecognizer().enabled=false
    }
}

看起来你正在禁用平移手势识别器,随着禁用用户交互在你的视图,当显示视图控制器的前位置不是在左边的位置在你的委托方法实现revealController:willMoveToPosition:SWRevealViewControllerDelegate。因此,显示视图控制器只能移动到一个位置。您可以更改该代码以允许您需要的其他位置。

例如,如果注释掉这段代码

func revealController(revealController: SWRevealViewController!, willMoveToPosition position: FrontViewPosition)
{
    if position == FrontViewPosition.Left     // if it not statisfy try this --> if revealController.frontViewPosition == FrontViewPosition.Left
    {
        self.view.userInteractionEnabled = true
        revealController.panGestureRecognizer().enabled=true
    }
    else
    {
        self.view.userInteractionEnabled = false
        revealController.panGestureRecognizer().enabled=false
    }
}

应该防止不必要地禁用平移手势。

如果你需要禁用显示视图控制器平移手势,我建议使用SWRevealViewControllerDelegate中的委托方法revealControllerPanGestureShouldBegin:

最新更新