Swift: SWReavealController Не удается провести пальцем, чтобы закрыть меню "только открыть с помощью пальца"

Это слайд-меню с использованием 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
    }

}

1 ответ

Решение

Похоже, что вы отключаете распознаватель жестов панорамирования, а также отключаете взаимодействие с пользователем в вашем представлении, когда передняя позиция контроллера представления представления не находится в левом положении в реализации метода делегата для 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,

Другие вопросы по тегам