从 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
,但需要点击图片的名称。因此,为此您还可以将tag
给UIImageView
以识别它们,然后可以访问任何信息。
首先从故事板,将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 时遇到问题