UITapGestureRecognizer无法在iOS9上运行

我有一个使用UITapGestureRecognizers的应用程序,它似乎在iOS9 Beta 2中不起作用。

他们成功地打电话了

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { NSLog(@"shouldReceiveTouch"); return YES; } 

但它没有击中任何其他UITapGesture委托方法。

当我在iOS 8上运行的设备上运行相同的应用程序(来自Xcode 7)时,它按预期工作。

还有其他人打过这个吗?

以下是我初始化UITapGestureRecognizer的方法。 TapGestureRecognizerSetup

编辑
如果我在代码中而不是在ViewController xib中创建UITapGestureRecognizer它可以正常工作,那么iOS9中的xib解析会有所改进。

 _tapGesture2 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onMainViewTap:)]; _tapGesture2.numberOfTapsRequired = 1; _tapGesture2.delegate = self; [self.view addGestureRecognizer:_tapGesture2]; 

EDIT2
如果我删除了XIB中的GestureRecognizer并使用XCode 7再次将其添加回来,它也有效。 当我这样做时,它将到UITapGestureRecognizer下的xib中。

似乎iOS9在手势识别器的xml中寻找行,如果没有它,则点击识别器不起作用。 要修复你,可以在代码中构建识别器,将该行添加到xml中,或删除并在Xcode 7中重新添加手势识别器,这将正确地将pressTypeMask添加到xml中。

我想知道苹果是否会修复iOS9而不使用XML中的那一行,但是现在,这是一个简单的解决方案。

我也遇到了这个问题,特别是当试图获取我的按钮和视图时,在表格单元格中点击手势以响应其布局在xib中定义的点击。 在iOS 8和10上工作得很好,但不是9.真正的问题是我将这些添加到自定义uiview并将视图的类分配给我的UITableViewCell子类,而不是在IB中使用Table View Cell对象。 因此,我没有将我的子视图添加到IB对象为您提供的contentView ,从而导致我出现问题。 修复是重做xib以使用Table View Cell作为我的根,所以我可以将我的子视图附加到内容视图。

实现UIGestureRecognizer的所有可选委托将起作用。

我通过Xcode-7 beta 2检查了它

我用gesturerecognizer创建了vc,并为属性和动作创建了出口。 在viewDidload中设置委托,如下所示: 在此处输入图像描述

在调试期间调用的所有方法 – 我都标记为//被调用

我收到了下一个方法的事件:

 func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { print("worked") // called return true } func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool { //called print("worked") return true } func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOfGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { print("worked") //called return true } 

尝试重新创建我提到的项目并检查所有商店和代表

希望这可以帮助