自定义 UIButton + 子视图 = 无事件
Posted
技术标签:
【中文标题】自定义 UIButton + 子视图 = 无事件【英文标题】:Custom UIButton + subviews = no events 【发布时间】:2010-04-27 21:24:58 【问题描述】:基本上我有一个自定义 UIButton,这个自定义按钮包含子视图。如果我将这些子视图添加到我的 UIButton,那么按钮将停止响应事件更改。即,如果我点击它,它不会响应选择器。我将所有内容都设置为userInteractionEnabled
。我也尝试添加 touchbegan 并且这是有效的。如果我删除这些子视图, UIButton 将再次起作用。
如何从按钮获取点击事件?
【问题讨论】:
【参考方案1】:子视图应将userInteractionEnabled
设置为NO
。这里发生的是子视图正在获取触摸事件而不是 UIButton。如果这不起作用,另一种选择是在您的自定义 UIButton 中覆盖hitTest:withEvent:
,以便它始终返回自身并且不询问其子视图是否应该处理该事件。有关详细信息,请参阅UIView docs。
【讨论】:
非常感谢。你是对的,我不应该启用用户交互。 我不知道这让我厌烦了多少次。我一直认为它需要扭转。我现在要去玩蚀刻素描了。 谢谢 - 我的子类按钮 userInteractionEnabled 不起作用,但 hitTest 方法确实: - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event return self;以上是关于自定义 UIButton + 子视图 = 无事件的主要内容,如果未能解决你的问题,请参考以下文章
Swift:在自定义视图中未调用 UIButton 触摸事件