Swift:SWReavealController无法滑动以关闭菜单“仅通过滑动打开" [英] Swift: SWReavealController Can't Swipe to close menu "only open with swipe"

查看:58
本文介绍了Swift:SWReavealController无法滑动以关闭菜单“仅通过滑动打开"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是使用SWRevealController的Slideout菜单,可以正常运行,但可以滑动以打开但不能滑动以关闭菜单

This is Slideout menu using SWRevealController Which run perfectly but can swipe to open but doesn't swipe to close the menu

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

After adding the library I did few changes but I did know where is the issue.

这是主视图控制器中的代码

This is the code in the main 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
    }

}

推荐答案

当显示视图控制器的前面位置不在左侧位置时,您似乎在禁用平移手势识别器以及在视图上禁用了用户交互.在 SWRevealViewControllerDelegate 中的 revealController:willMoveToPosition:的委托方法实现中.因此,显示视图控制器只能移动到单个位置.您可以更改该代码以允许您需要其他职位.

It appears you are disabling the pan gesture recognizer, along with disabling user interaction on your view, when the the reveal view controller front position is not at the left position in your delegate method implementation for revealController:willMoveToPosition: from SWRevealViewControllerDelegate. Therefore, the reveal view controller can only move to a single position. You can change that code to allow the additional positions that you require.

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

For example, if you comment out this code

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

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

that should prevent the disabling of the pan gesture unnecessarily.

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

If you need to disable the reveal view controller pan gesture, I'd suggest using the delegate method revealControllerPanGestureShouldBegin: from SWRevealViewControllerDelegate.

这篇关于Swift:SWReavealController无法滑动以关闭菜单“仅通过滑动打开"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆