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
,