【问题标题】:UITapGestureRecognizer issue in iOS 9iOS 9 中的 UITapGestureRecognizer 问题
【发布时间】:2015-12-14 10:34:10
【问题描述】:

伙计们,

今天我将我的 iPhone 更新到了 iOS 9,但手势识别器出现了问题。 这是错误:

警告:手势识别器 (; target= >) 在故事板/xib 中设置以添加到多个视图 (->; layer = >) 一次,这是不允许的,现在强制执行。 从 iOS 9.0 开始,它将被放置在它加载的第一个视图中 进入。

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

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

【问题讨论】:

    标签: ios ios9 uitapgesturerecognizer


    【解决方案1】:

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

    问题是:

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

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

    要解决这个问题,请遵循以下步骤:

    1. 确保您检查了 User Interaction Enabled 以获取您要使用 TapRecognizerGesture 分配的 UIView
    2. 在子视图TableViewCell 中添加一个新的UITapGestureRecognizer。代码:

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

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

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

    注意事项:

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

    【讨论】:

    • 在将目标添加到识别器时,我必须使用以下代码:cell.tapRecognizer.addTarget(self, action: #selector(FeedController.imageTap(_:)))
    • @GustavoStraube 是的,您是对的,此升级已在新的swift 中发布,但旧版本与我的回答相同。谢谢。
    【解决方案2】:

    我认为当您使用故事板添加点击手势识别器时会发生此问题。因为某些原因您添加了多个视图。(见图)。

    所以,删除其他错误的视图,留下正确的一个视图。

    【讨论】:

    • 它对我有用,当我们将手势识别器连接到视图时,xcode 没有给出任何反馈。
    【解决方案3】:

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

    【讨论】:

    • 我面临同样的问题..你把它分配给图片视图两次是什么意思..你能解释一下..真的很有帮助
    • 一个识别器只能分配给另一个组件。对我来说,我为图片视图分配了两次相同的识别器。看看识别器,看看它引用了哪些其他组件
    • 这很不幸 - 我遇到了同样的问题,因为我故意在多个组件上使用相同的手势识别器,这似乎是一件合理的事情。我想这意味着如果我想将相同的行为附加到多个对象上,那么我需要创建多个手势识别器,而不是使用单个手势识别器。我觉得效率低下。
    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 2016-04-02
    • 2015-12-19
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多