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
分配给第一个单元格中的第一个图像,其他单元格将没有手势(手势已设置为仅第一个图像)。
要解决此问题,请按以下步骤操作:
- 确保已为要使用
TapRecognizerGesture
分配的UIView
选中了“已User Interaction Enabled
。 -
在子视图
TableViewCell
在我的例子中添加一个新的UITapGestureRecognizer
。 代码:internal let tapRecognizer1: UITapGestureRecognizer = UITapGestureRecognizer()`
-
在您的主视图
TableView
在我的案例中,TableView
和每个单元格将您对每个单元格创建的UITapGestureRecognizer
分配给主视图中的主函数:cell.tapRecognizer1.addTarget(self, action: "img_Click:") cell.img.gestureRecognizers = [] cell.img.gestureRecognizers!.append(cell.tapRecognizer1)
-
添加您希望
UITapGestureRecognizer
在单击时触发的function:func img_Click(sender: UITapGestureRecognizer) { print("ok") }
笔记:
- 如果您不希望主视图中的
UITapGestureRecognizer
操作直接在其子视图中分配,则可以使用简单方法。 - 在步骤4中,函数名称必须与
addTarget
行中的相同。
我认为当你使用storyboard添加了Tap Gesture Recognizer时会发生这个问题。 因为某些原因你添加了多个视图。(见图)。
因此,删除其他错误的视图,保留正确的一个视图。
已经修好了。 故事板是本地化的,我用一种语言将识别器分配给图片视图两次。 不知何故,这似乎也会在其他故事板上造成麻烦。