Swift:SWReavealController无法滑动关闭菜单“仅用滑动打开”

这是使用SWRevealController的Slideout菜单,它运行完美但可以滑动打开但不滑动以关闭菜单

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

这是主viewcontroller中的代码

@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 } } 

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

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