iOS 9中的UITapGestureRecognizer问题

我们,

今天我已将iPhone更新到iOS 9,现在手机识别器出现问题。 这是错误:

警告:在storyboard / xib中设置了一个手势识别器(; target = >),一次添加到多个视图( – >; layer =>),这个从未被允许过,现在已经执行了。 从iOS 9.0开始,它将被放入加载到的第一个视图中。

我对iOS8没有这个问题。 该视图包含UIImageView和TextView。 识别器被放入ImageView,并且只有这个视图的引用出口。

我真的不明白这个问题。 有人能帮助我吗? 谢谢 :)

这种情况发生在我身上,因为我想在TableViewCell包含的TableView使用Tap Gesture识别图像。

问题是:

我添加了一个Tap Gesture Recognizer但我的表中有多个TableViewCell (多个图像)。

iOS会将UITapGestureRecognizer分配给第一个单元格中的第一个图像,其他单元格将没有手势(手势已设置为仅第一个图像)。

要解决此问题,请按以下步骤操作:

  1. 确保已为要使用TapRecognizerGesture分配的UIView选中了“已User Interaction Enabled
  2. 在子视图TableViewCell在我的例子中添加一个新的UITapGestureRecognizer 。 代码:

     internal let tapRecognizer1: UITapGestureRecognizer = UITapGestureRecognizer()` 
  3. 在您的主视图TableView在我的案例中, TableView和每个单元格将您对每个单元格创建的UITapGestureRecognizer分配给主视图中的主函数:

     cell.tapRecognizer1.addTarget(self, action: "img_Click:") cell.img.gestureRecognizers = [] cell.img.gestureRecognizers!.append(cell.tapRecognizer1) 
  4. 添加您希望UITapGestureRecognizer在单击时触发的function:

     func img_Click(sender: UITapGestureRecognizer) { print("ok") } 

笔记:

  • 如果您不希望主视图中的UITapGestureRecognizer操作直接在其子视图中分配,则可以使用简单方法。
  • 在步骤4中,函数名称必须与addTarget行中的相同。

我认为当你使用storyboard添加了Tap Gesture Recognizer时会发生这个问题。 因为某些原因你添加了多个视图。(见图)。

在此处输入图像描述

因此,删除其他错误的视图,保留正确的一个视图。

在此处输入图像描述

已经修好了。 故事板是本地化的,我用一种语言将识别器分配给图片视图两次。 不知何故,这似乎也会在其他故事板上造成麻烦。