IBAction 不会连接到我的元素

Posted

技术标签:

【中文标题】IBAction 不会连接到我的元素【英文标题】:IBAction wont connect to my element 【发布时间】:2014-11-27 12:12:41 【问题描述】:

我一直在尝试在线搜索并在我的“书”中找到一个确凿的答案,但一直未能。我正在使用 UIImageView 并希望将其连接到 IBAction。当 Ctrl 拖动到我的相关 VC.m 时,它不会让我。然后我尝试进入属性检查器并勾选“启用用户交互”复选框,并在身份检查器下检查了按钮的 traits 复选框。这不应该让我的元素/控件能够连接到一个动作吗?进一步挖掘,我正在阅读有关被动、主动和静态控件的信息,但我认为您应该能够将操作连接到用户与之交互的任何控件,因为它们都继承自 UIControl。

非常感谢任何启示。

(我也尝试了其他一些元素,但我似乎能够连接使用按钮的操作)

【问题讨论】:

【参考方案1】:

UIImageView 不继承自 UIControl。如果您想在用户触摸您的图像时执行操作,则需要向其添加UIGestureRecognizer

【讨论】:

我确实对此进行了研究,但认为连接 IBAction 会更容易(显然不可能:)) 我有 4 张图片。如果我添加一个 UIGestureRecognizer,我如何确定触摸了什么图像。由于连接的 IBAction 将手势作为参数,我看不到我能够使用发送者来决定触摸了什么图像。 (我可能会改用按钮,但我非常想知道如何做到这一点) UIGestureRecognizer 有一个接受整数的tag 属性。为每个UIImage 使用不同的UIGestureRecognizer 和相同的IBAction,并为每个手势赋予不同的标签值。然后,在 IBAction 中,您可以使用if else 或使用switch 语句来检查标签,即点击了哪个图像。【参考方案2】:

首先澄清几点:

特征仅供可访问性使用。它不为您提供 触摸检测 启用用户交互也并不意味着你 认为这意味着 documentation

我认为您需要某种 UIGestureRecognizer 或 UIButton

【讨论】:

IBAction 基本上只用于 UIButtons?您能否详细说明一下特征/可访问性部分? 好吧,documentation IBActions 中的所有内容都可以设置在任何可以附加 UIGestureRecognizer 的东西上(据我所知,UIView 的任何子类都符合条件) 啊,对,我只以编程方式处理手势。我看到我可以从对象列表中的 IB 中添加一个。这将使我有资格连接我想的 IBActtion【参考方案3】:

听起来您正试图让 UIImageView 像 UIButton 一样工作。为什么不简单地将 UIImageView 替换为 UIButton 并将按钮的背景图像设置为与用于 imageView 的图像相同的图像?然后将按钮连接到 IBAction。按钮是一个活动控件 - 它旨在完全按照您的意愿行事,那么为什么不使用它呢?

【讨论】:

以上是关于IBAction 不会连接到我的元素的主要内容,如果未能解决你的问题,请参考以下文章

IBAction - 在连接到服务器之前做一些事情

我的连接到我的视图控制器 IBAction 的菜单是灰色的

在 UILabel 中处理触摸事件并将其连接到 IBAction

如何测试 BarButtonItem 是不是连接到正确的 IBAction?

将 IBAction 连接到自定义类

在代码中将 UIButton 连接到 IBOutlet 和 IBAction