滑动菜单打开滑动和按钮

问题描述 投票:0回答:1

我有一个幻灯片菜单。按下按钮打开菜单。我也需要添加滑动来打开菜单。我做两个功能。但打开了两个菜单 - 一个按下按钮,另一个按下时)))我需要打开一个菜单。请帮帮我

它的代码和SWIPE的图像代码

 [@objc public func onSlideMenuButtonPressed(_ sender : UIButton){
        if (sender.tag == 10)
        {
            // To Hide Menu If it already there

            self.slideMenuItemSelectedAtIndex(-1);

            sender.tag = 0;

            let viewMenuBack : UIView = view.subviews.last!

            UIView.animate(withDuration: 0.3, animations: { () -> Void in
                var frameMenu : CGRect = viewMenuBack.frame
                frameMenu.origin.x = -1 * UIScreen.main.bounds.size.width
                viewMenuBack.frame = frameMenu
                viewMenuBack.layoutIfNeeded()
                viewMenuBack.backgroundColor = UIColor.clear
                }, completion: { (finished) -> Void in
                    viewMenuBack.removeFromSuperview()
            })

            return
        }

        sender.isEnabled = false
        sender.tag = 10

        let menuVC : MenuViewController = self.storyboard!.instantiateViewController(withIdentifier: "MenuViewController") as! MenuViewController
        menuVC.btnMenu = sender
        menuVC.delegate = self
        self.view.addSubview(menuVC.view)
        self.addChildViewController(menuVC)
        menuVC.view.layoutIfNeeded()


        menuVC.view.frame=CGRect(x: 0 - UIScreen.main.bounds.size.width, y: 0, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height);

        UIView.animate(withDuration: 0.3, animations: { () -> Void in
            menuVC.view.frame=CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: UIScreen.main.bounds.size.height);
            sender.isEnabled = true
            }, completion:nil)
    }


    public func openMenu(){

        SwipeRigtYES = true
//        sender.isEnabled = false
//        sender.tag = 10
        let menuVC : MenuViewController = self.storyboard!.instantiateViewController(withIdentifier: "MenuViewController") as! MenuViewController
//        menuVC.btnMenu = sender
        menuVC.delegate = self
        self.view.addSubview(menuVC.view)
        self.addChildViewController(menuVC)

    }

    public func closeMenu(){
        SwipeRigtYES = false

        let viewMenuBack : UIView = view.subviews.last!

        UIView.animate(withDuration: 0.3, animations: { () -> Void in
            var frameMenu : CGRect = viewMenuBack.frame
            frameMenu.origin.x = -1 * UIScreen.main.bounds.size.width
            viewMenuBack.frame = frameMenu
            viewMenuBack.layoutIfNeeded()
            viewMenuBack.backgroundColor = UIColor.clear
        }, completion: { (finished) -> Void in
            viewMenuBack.removeFromSuperview()
        })

然后滑动

 @objc func handleGesture(gesture: UISwipeGestureRecognizer) -> Void {
        if gesture.direction == UISwipeGestureRecognizerDirection.right {
            print("Swipe Right")
            if SwipeRigtYES==false {
                 openMenu()
                print("open")
            }else {
            print("Else")
        }




        }
        else if gesture.direction == UISwipeGestureRecognizerDirection.left  {
            print("Swipe Left")
            if SwipeRigtYES==true {
                closeMenu()


                print("close")
            } else {
                print("Else")
            }

请帮助我也许我需要一个带有点击按钮的功能和滑动操作来打开菜单

swift button menu swipe
1个回答
0
投票

首先将menuView作为主VC中的var,然后在执行菜单动画时制作bool,省略任何后续点击,直到动画结束动作发送者是滑动还是单击按钮

© www.soinside.com 2019 - 2024. All rights reserved.