从 touchesEnded 获取图像名称

Posted

技术标签:

【中文标题】从 touchesEnded 获取图像名称【英文标题】:Get image name from touchesEnded 【发布时间】:2017-08-30 11:57:58 【问题描述】:

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

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

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

【问题讨论】:

你能解释一下为什么你不喜欢使用 IBOutlet 来处理图像吗?视图是动态的,还是每次显示时的布局都相同? @stephen 它是堆栈视图中静态图像和动态图像的混合。 检查这个答案:***.com/a/5192999/1718685你应该能够确定触摸下方的视图。 【参考方案1】:

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

你可以像这样获取被触摸的元素:

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)
    

请注意,如果您想这样做,您必须设置两次图像文件名,并在进行更改时更改两次值。你正在尝试的东西带有糟糕设计的味道,所以如果有其他方法,我会采用。

【讨论】:

如何在 touchesEnded 中检索恢复 ID?【参考方案2】:

如果我的问题是正确的,你不想使用@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)
                
            
        
    

希望对你有帮助。

【讨论】:

你是什么意思提到 请不要投反对票。不允许在回答中提及那种metnion。如果您不确定自己的答案,请添加评论。 如何在 touchesEnded 中检索该标签? @NitinGohel 我是新来的,所以不太了解,我会添加 commnt 但它需要 50 声望。 @Maanu 不管你需要什么 50repo 这并不意味着你要求某人做赞成票或反对票。

以上是关于从 touchesEnded 获取图像名称的主要内容,如果未能解决你的问题,请参考以下文章

从照片库中获取图像名称

从资产中获取实际图像名称

从ios中的UIImageWriteToSavedPhotosAlbum获取图像名称[重复]

使用带有 UIImageView 的 touchesEnded 时遇到问题

如何从使用库或相机拍摄的 UIImagePickerControllerPHAsset 获取图像名称?

如何在 Swift 中按名称/标识符从相机胶卷中获取图像