从触摸中获取图像名称



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

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

我有可能在此功能中获得单击的图像的名称吗?我希望不 @IBOutlet图像。

我很确定这不像您想要的那样。图像视图不会保留他们从中加载图像的文件,仅保留图像数据本身。但是我认为您是在IB中设置图像名称,并在触摸事件发生后尝试获取该名称,在这种情况下,您可以在元素的修复ID中设置图像名称,并通过触摸元素的RestorationIdentifier属性检索名称。

您可以得到这样的触摸元素:

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let touch: UITouch = touches.first {
        let location = touch.location(in: self.view)
        let touchedView = self.view.hitTest(location, with: event)
        print(touchedView.restorationIdentifier)
    }
}

请注意,如果您想这样做,则必须将图像文件名设置两次,并在更改时两次更改值。您正在尝试闻到不良设计的气味,所以如果有另一种方法,我会选择。

如果我有正确的问题,您不想使用@IBOutlet,但需要单击映像的名称。因此,为此,您还可以将tagUIImageView以识别它们,以后可以访问任何信息。

首先来自故事板,分配1或任何INT值为tag属性,并检查User Interaction Enabled是否 ImageView

用以下行替换接触 -

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)
                }
            }
        }
    }

希望它有帮助。

相关内容

  • 没有找到相关文章

最新更新