iOS 9中的UITapGestureRecognizer问题

时间:2015-09-17 14:02:54

标签: ios ios9 uitapgesturerecognizer

我们,

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

  

警告:手势识别器(; target =   <(action = onVideoTap:,target =)>>)   在storyboard / xib中设置,以添加到多个视图中   ( - &gt ;; layer =>)一次,从未允许,现在强制执行。   从iOS 9.0开始,它将被放入它加载的第一个视图中   成。

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

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

3 个答案:

答案 0 :(得分:12)

这种情况发生在我身上,因为我想使用点击手势识别TableViewCell中包含的TableView中的图片。

问题是:

我添加了一个点击手势识别器,但我的表格中有多个TableViewCell(多个图片)。

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

要解决此问题,请按照:

  1. 请务必选中User Interaction Enabled以查找要UIView分配的TapRecognizerGesture
  2. 在我的案例中,子视图TableViewCell中的
  3. 添加了新的UITapGestureRecognizer。代码:

    internal let tapRecognizer1: UITapGestureRecognizer = UITapGestureRecognizer()`
    
  4. 在我的主视图TableView中,对于每个单元格,将每个单元格中的UITapGestureRecognizer分配给主视图中的主函数:

    cell.tapRecognizer1.addTarget(self, action: "img_Click:")
    cell.img.gestureRecognizers = []
    cell.img.gestureRecognizers!.append(cell.tapRecognizer1)
    
  5. 单击时添加要激活的功能UITapGestureRecognizer

    func img_Click(sender: UITapGestureRecognizer) {
        print("ok")
    }
    
  6. 说明:

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

答案 1 :(得分:11)

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

ElementLib

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

enter image description here

答案 2 :(得分:4)

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