【问题标题】:How to recognize which UIImageView is tapped using gesture recognizer?如何识别使用手势识别器点击了哪个 UIImageView?
【发布时间】:2014-02-11 03:43:18
【问题描述】:

我的视图中有 5 个 ImageView,并且我有所有这些的 IBOutlets。

我已经为所有这些设置了单击手势识别器。

现在,在此手势识别器的操作中,我需要找出已点击的图像。

请告诉我实现这一目标的方法。请注意,我正在使用情节提要添加所有这些图像和手势识别器。

谢谢。

【问题讨论】:

  • 你的问题毫无意义。您不能为五个不同的视图设置单击手势识别器。它只有一种观点。如果您有五个可点击的图像视图,请制作五个点击手势识别器来配合它们。现在,当手势识别器触发时,它的view 就是被点击的图像视图。

标签: iphone uigesturerecognizer gesture-recognition


【解决方案1】:

UIImageView 不响应触摸手势。您需要对其进行子类化,然后将手势侦听器附加到每个视图。来自here

UIImageView 派生自 UIView,而 UIView 派生自 UIResponder 准备好处理触摸事件。你会想要 提供 touchesBegan、touchesMoved 和 touchesEnded 方法和 如果用户点击图像,他们会被调用。如果你想要的只是一个 点击事件,使用带有图像集的自定义按钮更容易 作为按钮图像。但如果你想对水龙头进行更细粒度的控制, 移动等。这是要走的路。

您还需要查看更多内容:

覆盖 canBecomeFirstResponder 并返回 YES 以指示 view 可以成为触摸事件的焦点(默认为 NO)。

将 userInteractionEnabled 属性设置为 YES。默认为 UIViews 是 YES,但 UIImageViews 是 NO 所以你必须明确 打开它。

如果您想响应多点触控事件(即捏合、缩放等) 您需要将 multipleTouchEnabled 设置为 YES。

【讨论】:

    【解决方案2】:

    您应该为每个 imageView 设置点击手势。 在此之后,您应该为每个 imageView 设置一个唯一的标签。 然后,你可以用标签指定被点击的imageView。imageView对象可以通过UIGestureRecognizer的'view'属性来实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-01
      • 1970-01-01
      • 2017-04-26
      • 1970-01-01
      • 2013-10-13
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多