UIButton 子类忽略“Touch Up Inside”事件

Posted

技术标签:

【中文标题】UIButton 子类忽略“Touch Up Inside”事件【英文标题】:UIButton Subclass Ignoring 'Touch Up Inside' Event 【发布时间】:2016-03-19 17:39:33 【问题描述】:

我有一个 UIButton 的子类:

    import UIKit
    class CustomButton: UIButton 

        required init?(coder decoder: NSCoder) 
            super.init(coder: decoder)

            //Customizing the button appearance
        
    

在界面生成器中,在故事板中,在我的主视图控制器下,我拖放了一个股票按钮,并从下拉菜单中将其“自定义类”更改为自定义按钮。

将它的“Touch Up Inside”事件连接到 IBAction。

显示自定义外观代码,但按钮未触发“内部修饰”

当我检查子类中的触摸事件(触摸开始、结束、进食)时,按钮似乎正在接收触摸。

【问题讨论】:

【参考方案1】:

尝试在作为 UIButton 一部分的子视图上禁用用户交互。这将允许手势继续到按钮本身。

userInteractionEnabled = false

【讨论】:

【参考方案2】:

发现问题:

当我自定义按钮时,我添加了一个 UIVisualEffectView 作为覆盖整个框架的子视图,并取消了按钮能够接受的任何事件。很不幸。

我不得不使用 UIView 子类并添加一个点击手势来模拟触摸事件。

【讨论】:

以上是关于UIButton 子类忽略“Touch Up Inside”事件的主要内容,如果未能解决你的问题,请参考以下文章

子类 UIButton 似乎没有初始化

UIButton 子类不响应超级方法?

UIButton 子类@IBAction 不起作用

如何初始化 UIButton 子类?

我在 MonoTouch 中将 UIButton 子类化,但底层 ObjC 类仍然是 UIButton

子类化 UIButton 标题字体大小意外更改