Ios Swift:SWReavealController可以';t滑动以关闭菜单“;仅使用“刷卡”打开;

Ios Swift:SWReavealController可以';t滑动以关闭菜单“;仅使用“刷卡”打开;,ios,iphone,swift,uinavigationcontroller,swrevealviewcontroller,Ios,Iphone,Swift,Uinavigationcontroller,Swrevealviewcontroller,这是使用SWRevealController的滑出菜单,运行良好,但可以滑动打开,但不能滑动关闭菜单 添加库后,我做了一些更改,但我确实知道问题出在哪里 这是主viewcontroller中的代码 @IBOutlet weak var menuButton:UIBarButtonItem! override func viewDidLoad() { super.viewDidLoad() if self.revealViewController() != nil {

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

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

这是主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:
的代理方法实现中的左侧位置时,您似乎正在禁用平移手势识别器,同时禁用视图上的用户交互。因此,分隔缝视图控制器只能移动到单个位置。您可以更改该代码以允许您需要的其他位置

例如,如果您注释掉此代码

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
    }
}
这将防止不必要地禁用平移手势


如果需要禁用显示视图控制器平移手势,我建议使用委托方法
RevealControllerPangTesture应该开始:
from
SWRevealViewControllerDelegate

似乎您不必要地禁用平移手势识别器。如果您通过删除代码或注释它来停止这样做,它是否解决了您的问题?我已经添加了我在回答中提到的代码。哇,它工作得很好,我浪费了几个小时试图修复它。非常感谢你。我很高兴能帮上忙。我还想指出,您可能在
but_back()
函数中不必要地添加了额外的平移手势识别器。在
viewdiload:
中添加一次就足够了。是的,我做了评论,它仍然可以正常工作。谢谢兄弟