在 UITapGestureRecognizer 操作中引用发件人

Posted

技术标签:

【中文标题】在 UITapGestureRecognizer 操作中引用发件人【英文标题】:Reference sender in UITapGestureRecognizer action 【发布时间】:2018-09-02 15:34:26 【问题描述】:

为了搭建舞台,我有一个 4x5 的 UIImageView 网格,我想翻转它并在点击时显示一个新图像。我想用一个@IBaction 来完成这个。当识别到点击时,我只是在引用选定的 UIIMageView 时遇到了一些麻烦。我敢肯定这是非常简单的事情。我刚刚开始使用 UITapGestureRecognizer,所以我还不知道所有的来龙去脉。这是我尝试使用的@IBAction:

@IBAction func tileTapped(recognizer: UITapGestureRecognizer, _ sender: UIImageView) 
    print("Tile Tapped: \(sender.tag)")

无论点击什么 UIImageView,我的打印语句都会给我以下信息:

Tile Taped: 0

我的标签设置为引用它们所在的行和列。例如,我的第一行的标签是:

00、01、02、03

我最大的挑战是简单地检索适当 UIIMageView 的标签。一旦我弄清楚这一点,我应该是坚实的。

提前致谢!

【问题讨论】:

【参考方案1】:

这不是手势识别器的有效功能。有关可能的签名,请参阅UIGestureRecognizer 的文档。

要访问与手势关联的视图,请访问手势的view 属性。

@IBAction func tileTapped(_ recognizer: UITapGestureRecognizer) 
    if let view = recognizer.view as? UIImageView 
        print("Tile Tapped: \(view.tag)")
    

【讨论】:

谢谢!太棒了。我很快就会标记为正确。

以上是关于在 UITapGestureRecognizer 操作中引用发件人的主要内容,如果未能解决你的问题,请参考以下文章

在 UITapGestureRecognizer 上添加参数

在 UITapGestureRecognizer 中更改字体

使用 UITapGestureRecognizer 无法识别的选择器

带有点击事件的 UITapGestureRecognizer

UITapGestureRecognizer 和 touchesBegan 用于相同的视图

UIButton 上的 UITapGestureRecognizer