iOS 11问题 - 如果手势添加到导航栏,则不会触发酒吧按钮操作

问题描述:

这可以在iOS 10上完美运行,但不适用于iOS 11. showFlyoutMenu不会启动。iOS 11问题 - 如果手势添加到导航栏,则不会触发酒吧按钮操作

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; 

你应该设置你的手势识别的cancelsTouchesInViewfalse
见:cancelsTouchesInView

讨论
当此属性为true(默认值)和接收器识别的姿态,这一姿态被挂起不会传递到视图的触摸和以前交付触摸通过touchesCancelled(_:with :)消息发送到视图来取消。如果手势识别器无法识别其手势,或者此属性的值为false,则视图会接收多点触摸序列中的所有触摸。

+0

是。刚刚找到解决方案。并且想要添加,这已经在iOS 11.2中修复了 – Nitish