Проблема с iOS 11 - действие кнопки панели не срабатывает, если на панель навигации добавлен жест

Это прекрасно работало на iOS 10. Но не работает на iOS 11. showFlyoutMenu не разжигать

gestureLeftArrow = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(leftArrowGesture:)];
            [self.navigationController.navigationBar addGestureRecognizer:gestureLeftArrow];

            gestureRightArrow = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(rightArrowGesture:)];
            [self.navigationController.navigationBar addGestureRecognizer:gestureRightArrow];  


UIImage *image = [[UIImage imageNamed:@"hamburger-new.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
        UIBarButtonItem *flyoutButton = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(showFlyoutMenu)];
        self.navigationItem.rightBarButtonItem = flyoutButton;

1 ответ

Решение

Вы должны установить cancelsTouchesInView ваших распознавателей жестов false,
Смотрите: отменить, прикоснуться, посмотреть

обсуждение
Когда это свойство имеет значение true (по умолчанию) и получатель распознает его жест, ожидающие касания этого жеста не доставляются в представление, а ранее доставленные касания отменяются с помощью сообщения touchesCancelled(_:with:), отправляемого представлению, Если распознаватель жестов не распознает его жест или если значение этого свойства равно false, представление получает все касания в последовательности мультитач.

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