Swift:UILabel 上的 UIButton

Posted

技术标签:

【中文标题】Swift:UILabel 上的 UIButton【英文标题】:Swift: UIButton on UILabel 【发布时间】:2016-08-03 23:21:18 【问题描述】:

在某些情况下,我必须使 UILabel 可点击。 我尝试了许多来自 *** 的答案来制作 UIlabelClickable,但它们都不起作用。

所以最终,我决定将 UIButton 定位在 UILabel 上,并使按钮透明。

但是,尽管按钮正确地位于标签顶部,但单击按钮不会进行交互。有什么想法吗?

谢谢

编辑:此外,还有两个视图,比如 view1 和 view2。由于我的应用程序的结构,我将 UIButton 和 UILabel 放在视图 2 上,然后将视图 2 放在视图 1 上。 所以:

view2.addSubview(button)
view1.addSubview(view2)

【问题讨论】:

你为什么不完全删除 UILabel 而只使用 UIButton 呢? UIButton 基本上是一个可点击的 UILabel。 原因是UILabel运行了多个函数,所以我无法更改为UIButton。 为什么不能只在 UIButton 上运行这些功能? 最初,我的应用不需要点击操作,但现在需要。我的意思是我可以切换功能来获取UIButton而不是UILabel,但是由于功能很多,我只是不想全部修改它们。但如果这是唯一的方法,我会这样做,谢谢 FancyLabel 正是您所需要的 furbo.org/2008/10/07/fancy-uilabels 【参考方案1】:

您应该能够将 UILabel 的 userInteractionEnabled 设置为 true,因为 UILabel 从其 UIView 超类继承了该属性。

我忘了提一下,您必须使用带有标签的轻击手势识别器,因为 UILabel 不像一开始那样从 UIControl 继承。

话虽如此,您可以简单地向您的 UILabel 添加一个轻击手势识别器。

【讨论】:

显然,我的按钮不在超级视图中,这就是它不起作用的原因。很抱歉提出愚蠢的问题,感谢您提供的所有帮助【参考方案2】:

不透明度为零的视图不可点击。给按钮一个非常小的不透明度,但不完全为零。它不可见,但现在可以点击了。

或者,使用没有标题和背景颜色的普通按钮,其 alpha 接近于零但不完全为零。同样,这将不可见,但可以点击。

【讨论】:

【参考方案3】:

如果您需要 UILabel 可点击,那么您需要删除标签并使用 UIButton 并将按钮的名称更改为您的标签所说的名称。这看起来像一个标签,但可以点击。

希望这会有所帮助!

【讨论】:

【参考方案4】:

实际上UIButton 上有一个titleLabel。因此,当您想要可点击的 UILabel 时,可以使用 UIButton

【讨论】:

【参考方案5】:

首先我会回答你的问题。有两种可能

1)UILabel可能在UIButton之上,所以你需要把UIButton放在UILabel上。

2) 您可能已将 UIButton 颜色设置为清除颜色,从而使 Alpha 为 0.0f。这使按钮不可点击。所以你需要改变它的颜色设置。并将 Alpha 设为 1.0

最好的方法只使用 UIButton 而不要使用 UIButton 和 UILabel。或仅具有 userInteractionEnabled 属性的 UILabel。

【讨论】:

以上是关于Swift:UILabel 上的 UIButton的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 UILabel 在 Swift 中阻止对父 UIButton 的触摸?

角落不是UILabel和UIbutton ios swift的圆形

如何通过点击其他 UIButton 来移动 UILabel?

如何将 UIButton 文本与 UILabel 文本垂直对齐?

使用 UILabel 和 UIButton 显示用户标签

试图将 UILabel 放在自定义 UIAlertView 中的 UIButton 之上