iOS 9中的UITapGestureRecognizer问题

use*_*173 13 ios uitapgesturerecognizer ios9

我们,

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

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

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

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

waj*_*jih 12

这发生在我身上,因为我想使用Tap Gesture识别一个TableViewCell包含在一个图像中的图像TableView.

问题是:

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

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

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

  1. 确保您检查User Interaction EnabledUIView要分配的内容TapRecognizerGesture.
  2. TableViewCell我的情况下的子视图中添加一个新的UITapGestureRecognizer.代码:

    internal let tapRecognizer1: UITapGestureRecognizer = UITapGestureRecognizer()`
    
    Run Code Online (Sandbox Code Playgroud)
  3. 在我的主视图TableView中,对于每个单元格,将UITapGestureRecognizer每个单元格所做的内容分配给主视图中的主函数:

    cell.tapRecognizer1.addTarget(self, action: "img_Click:")
    cell.img.gestureRecognizers = []
    cell.img.gestureRecognizers!.append(cell.tapRecognizer1)
    
    Run Code Online (Sandbox Code Playgroud)
  4. UITapGestureRecognizer单击时添加要触发的功能:

    func img_Click(sender: UITapGestureRecognizer) {
        print("ok")
    }
    
    Run Code Online (Sandbox Code Playgroud)

笔记:

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


小智 11

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

在此输入图像描述

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

在此输入图像描述


use*_*173 4

已经修好了。故事板已本地化,并且以一种语言我将识别器分配给图片视图两次。不知何故,这似乎也给其他故事板带来了麻烦。

  • 这是不幸的 - 我遇到了同样的问题,因为我故意在多个组件上使用相同的手势识别器,这似乎是一个合理的事情。我想这意味着如果我想将相同的行为附加到多个对象,那么我需要创建多个手势识别器,而不是使用单个手势识别器。我感觉效率很低。 (3认同)