Swift:获得UIPanGestureRecognizer的目标

时间:2015-06-25 22:51:35

标签: ios swift uiview uigesturerecognizer uipangesturerecognizer

在我的ViewController.swift中,我有一个包含自定义UIViews的数组。每次创建一个,我都会像这样添加一个UIPanGestureRecognizer:

var panRecognizer = UIPanGestureRecognizer(target: self, action: "detectPan:")
newCard.gestureRecognizers = [panRecognizer]

这链接到我的detectPan(recognizer: UIPanGestureRecognizer)函数,该函数处理移动。但是,由于我有多个与该功能相关联的对象,我不确定如何确定输入来自哪个。

我可以使用(不存在的)recognizer.target吗?我应该从每个自定义UIViews中处理平移吗?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

首先,您应该使用panRecognizer声明let

let panRecognizer = UIPanGestureRecognizer(target: self, action: "detectPan:")

其次,您不应设置任何gestureRecognizers的{​​{1}}属性。这是不好的做法,因为UIKit可能已经在幕后为该视图添加了自己的手势识别器。如果您随后通过将UIView分配给该属性来删除这些识别器,则可能会出现意外行为。要添加平移手势识别器,请执行以下操作:

[panRecognizer]

然后,在您的newCard.addGestureRecognizer(panRecognizer) 方法中,您可以使用以下代码检测哪个detectPan(recognizer: UIPanGestureRecognizer)已被淘汰:

UIView