从touchesEnded获取图像名称

时间:2017-08-30 11:57:58

标签: ios swift uiviewcontroller touchesended

在我的故事板中,我有一些图像是"用户交互启用"。 在UIViewController中,我覆盖了touchesEnded函数。

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        super.touchesEnded(touches, with: event)
}

我是否可以获取此功能中单击的图像的名称?我不想@IBOutlet图像。

2 个答案:

答案 0 :(得分:0)

我很确定这不可能完全像你想要的那样。图像视图不保留它们加载图像的文件,只保留图像数据本身。但我假设您在IB中设置图像名称并尝试在触摸事件后获取该名称,在这种情况下,您可以在元素的恢复ID中设置图像名称,并通过触摸元素的restorationIdentifier属性检索名称。

你可以像这样得到被触摸的元素:

{{1}}

请注意,如果要这样做,则必须将图像文件名设置两次,并在进行更改时将值更改两次。你正在尝试什么样的糟糕设计,所以如果还有另一种方式我会去做。

答案 1 :(得分:0)

如果我的问题是正确的,你不想使用@IBOutlet,但需要点击图片的名称。因此,您也可以tagUIImageView发送标识,然后再访问任何信息。

首先来自故事板,将1或任何int值分配给tag属性,然后检查User Interaction Enabled ImageView

将touchesEnded替换为以下行 -

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        if let touch: UITouch = touches.first {
            let location = touch.location(in: self.view)
            if let touchedView = self.view.hitTest(location, with: event) as? UIImageView {
                if touchedView.tag == 1 {
                    debugPrint(touchedView.image)
                }
            }
        }
    }

希望它有所帮助。