UINavigationController interactivePopGestureRecognizer работает ненормально в iOS7

В iOS7 у нас есть новый "салфетки слева направо", это очень полезная функция, но теперь у меня есть проблема с ней.

Я использую этот код для настройки обратной кнопки в UINavigationBar.

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:view];

но это отключит жест "салфетки слева направо", поэтому я использую следующий код, чтобы поддерживать жест.

self.navigationController.interactivePopGestureRecognizer.delegate = self

И затем я обнаружил, что жест работает ненормально, если в текущем ViewController есть tableView, когда прокрутка tableView прокручивается, жест не запускается. Теперь жест не может быть легко запущен, есть ли способ исправить его?

Ответ 1

Этот код может хорошо работать для меня.

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return YES;
}

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
    return [gestureRecognizer isKindOfClass:UIScreenEdgePanGestureRecognizer.class];
}

Ответ 2

Установка interactivePopGestureRecognizer.delegate в self - это только первый шаг. Второй шаг - реализовать

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return ![otherGestureRecognizer isKindOfClass:UIPanGestureRecognizer.class];
}

Тест против распознавателя жестов панорамы необходим для блокировки вертикальной прокрутки прокрутки или представления таблицы во время выполнения интерактивной поп-музыки.

Ответ 3

Добавить в контроллер класса "UIGestureRecognizerDelegate"

в ViewDidApper добавить

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    self.navigationController?.interactivePopGestureRecognizer.delegate =  self
}

=)

Ответ 4

Решение, отправленное Wei, не помогло мне. Мои экраны заморозили признание любых жестов вообще.

Теперь я использую AHKNavigationController от Arkadiusz Holko http://holko.pl/ios/2014/04/06/interactive-pop-gesture/

Мне понадобилось 30 секунд, чтобы пройти через CocoaPods и еще 30 секунд, чтобы настроить как пользовательский класс моего NavigatonController через раскадровки.