UINavigationController interactivePopGestureRecognizer работает ненормально в iOS7
В iOS7 у нас появился новый жест "смахивание влево", это очень полезная функция, но теперь у меня возникла проблема с ней.
Я использую этот код для настройки кнопки "Назад" в UINavigationBar
,
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:view];
но это отключит жест "смахивание слева направо", поэтому я использую следующий код, чтобы оставить жест включенным.
self.navigationController.interactivePopGestureRecognizer.delegate = self
И затем я обнаружил, что жест работает ненормально, если текущий ViewController имеет tableView, когда tableView прокручивается, жест не будет запущен. Теперь жест не может быть легко запущен, есть ли способ это исправить?
4 ответа
Этот код может работать хорошо для меня.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return [gestureRecognizer isKindOfClass:UIScreenEdgePanGestureRecognizer.class];
}
Настройка interactivePopGestureRecognizer.delegate
в self
это только первый шаг. Второй шаг заключается в реализации
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return ![otherGestureRecognizer isKindOfClass:UIPanGestureRecognizer.class];
}
Проверка на распознаватель жестов панорамирования необходима для блокировки вертикальной прокрутки прокрутки или представления таблицы во время выполнения интерактивного всплывающего окна.
Добавьте в контроллер класса "UIGestureRecognizerDelegate"
в ViewDidApper добавить
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
self.navigationController?.interactivePopGestureRecognizer.delegate = self
}
знак равно
Решение, которое выложил Вэй, у меня не сработало. Мои экраны замерзали, теряя распознавание любых жестов.
Я сейчас использую AHKNavigationController от Аркадиуша Холко http://holko.pl/ios/2014/04/06/interactive-pop-gesture/
Мне потребовалось 30 секунд, чтобы получить доступ к CocoaPods, и еще 30 секунд, чтобы настроить пользовательский класс моего NavigatonController через раскадровки.