添加子视图后UIButton无法点击

Posted

技术标签:

【中文标题】添加子视图后UIButton无法点击【英文标题】:UIButton can't click after adding subViews 【发布时间】:2020-02-21 21:13:21 【问题描述】:

我在 UIButton 中添加了一个适合其内容的 subView,问题是我无法在单击它时听到按钮的操作,我的猜测是因为我的 UIButton 位于我添加的 subViews 的下方,但是不知道怎么解决。

这是我在按钮中添加子视图的代码

func setButtonContent(myButtonView: UIButton, textLabel: String, textViewDescription: String) 
    if let nibFile = Bundle.main.loadNibNamed("nibName", owner: self, options: nil)?.first as? FundTransferButton 
        nibFile.frame.size.height = myButtonView.frame.size.height
        nibFile.frame.size.width = myButtonView.frame.size.width
        nibFile.label.text = textLabel
        nibFile.textViewDescription.text = textViewDescription
        myButtonView.addSubview(nibFile)
    

我只想创建一个包含我的自定义设计的自定义按钮。

【问题讨论】:

我认为nibFile.isUserInteractionEnabled = false 应该可以解决它。 这能回答你的问题吗? UIButton with custom view - addTarget:action:forControlEvents: does not work @Sweeper 对我有用,谢谢!我只是感到困惑,因为我在自动布局中取消选中我的 xib 文件根目录上的启用用户交互但没有发生任何事情,我接受它作为答案 【参考方案1】:

您的直接问题可以通过以下方式解决:

nibFile.isUserInteractionEnabled = false

这会使您添加的子视图不响应点击事件,因此点击事件“通过”子视图并“到达”按钮。

如果你只是想创建一个自定义的UIButton,你应该继承UIControlUIButton,并在xib文件中设计按钮本身。

【讨论】:

【参考方案2】:

您可以在 UIButton 的层下添加子视图层。

myButtonView.insertSubview(nibFile, at: 0)

【讨论】:

以上是关于添加子视图后UIButton无法点击的主要内容,如果未能解决你的问题,请参考以下文章

检测 UIButton 触摸子视图

iOS - 添加约束后无法识别触摸

添加为 UIView 的子视图后,按钮不可点击

如果将 UIButton 作为子视图添加到 UIImageView,则单击 UIButton 不起作用

Swift - 将目标添加到子视图内的 UIButton

将 UIView 作为子视图添加到 UIButton 并将其置于前面无法正常工作