У меня есть контроллер, который как UIPageViewController внутри.Как правильно выбрать UIGestureRecognizer?
Использование pageviewcontroller Я могу повернуть влево, вправо, чтобы перейти к другим VC. Оно работает!
Итак, после того, как я добавил sideBarMenu. При добавлении этого меню я использую этот код, чтобы добавить жест распознаватель:
var menuViewController: UIViewController! {
didSet {
self.exitPanGesture = UIPanGestureRecognizer()
self.exitPanGesture.addTarget(self, action:"handleOffstagePan:")
self.sourceViewController.view.addGestureRecognizer(self.exitPanGesture)
}
Здесь sourceViewController мой оригинальный VC.
Проблема заключается в том, что я пытаюсь прокрутить (чтобы закрыть меню), работает прокрутка pageViewController.
Я хочу отключить прокрутку страницыViewController и включить новую функцию прокрутки при открытии меню. И делайте противоположно, когда меню закрыто.
Дополнительный код:
func handleOffstagePan(pan: UIPanGestureRecognizer){
println("dismiss pan gesture recognizer")
let translation = pan.translationInView(pan.view!)
let d = translation.x/CGRectGetWidth(pan.view!.bounds) * -0.5
switch (pan.state) {
case UIGestureRecognizerState.Began:
self.interactive = true
self.menuViewController.performSegueWithIdentifier("dismisMenu", sender: self)
break
case UIGestureRecognizerState.Changed:
self.updateInteractiveTransition(d)
break
default:
self.interactive = false
if d > 0.1 {
self.finishInteractiveTransition()
}else {
isMenuVisible = false
self.cancelInteractiveTransition()
}
}
}
Учитывая вашу проблему, я думаю, что в настоящее время handleOffstagePan событие не будет запускаться, я прав? –
Да, вы! Я нашел решение, вместо написания sourviewcontroller = PageViewController, я написал sourveviewcontroller = PageContentViewController. Теперь распознаватель жеста работает. У меня возникла новая проблема, теперь я не могу пронести по экрану влево, прямо на моем диспетчере просмотра страниц, мне нужно добавить старый распознаватель жестов или удалить новый, который я добавил (который закрывает меню). –
удалите распознаватель жестов, который добавляется в self.sourceViewController in side handleOffstagePan event –