自定义 UIButton - IBAction 不起作用

Posted

技术标签:

【中文标题】自定义 UIButton - IBAction 不起作用【英文标题】:Custom UIButton - IBAction not working 【发布时间】:2017-08-17 00:30:18 【问题描述】:

我有一个链接到 IBAction 的默认 UIButton(内部修饰)。这工作正常,所以我知道我的连接正常。一旦我将 UIButton 类更改为我的自定义按钮,IBAction 就不再被触发。下面是我的自定义 UIButton 的代码。任何想法为什么会发生这种情况?

import UIKit

@IBDesignable
class PrimaryButton: UIButton 

    override init(frame: CGRect) 
        super.init(frame: frame)
        initView()
    

    required init?(coder aDecoder: NSCoder) 
        super.init(coder: aDecoder)
        initView()
    


    private func initView() 
        let view = viewFromNibForClass()

        view.frame = bounds

        view.autoresizingMask = [
            UIViewAutoresizing.flexibleWidth,
            UIViewAutoresizing.flexibleHeight
        ]

        addSubview(view)
    

    private func viewFromNibForClass() -> UIView 
        let bundle = Bundle(for: type(of: self))
        let nib = UINib(nibName: String(describing: type(of: self)), bundle: bundle)
        let view = nib.instantiate(withOwner: self, options: nil).first as! UIView

        return view
    

【问题讨论】:

【参考方案1】:

您的代码不起作用,因为按钮不再接收触摸。所有触摸都发送到您添加的最顶层自定义视图。

设置view.userInteractionEnabled = false 使其对触摸透明。

【讨论】:

【参考方案2】:

您的自定义按钮被您添加的视图所覆盖。

【讨论】:

以上是关于自定义 UIButton - IBAction 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在主视图控制器的自定义单元格中使用来自 UIButton 的 IBAction

UIbutton不改变IBAction内的背景

UIButton 和 IBAction

在 UITableViewCell 中为自定义 UIButton 设置动画

将 IBAction 连接到自定义类

按钮未在自定义 UIButton 中注册触摸