Проблема с 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, представление получает все касания в последовательности мультитач.