自定义UIButton + 子视图 = 无法触发事件

26

基本上,我有一个自定义的UIButton,并且这个自定义按钮包含子视图。如果我将这些子视图添加到我的UIButton中,则该按钮停止响应事件更改。 也就是说,如果我点击它,它不会响应选择器。 我已经将所有设置为 userInteractionEnabled。 我还尝试添加touchbegan,这也有效。 如果我删除那些子视图,则UIButton会再次正常工作。

我该如何从按钮获取点击事件?

1个回答

60

子视图应将 userInteractionEnabled 设置为 NO。这里发生的情况是,子视图获取了触摸事件,而不是 UIButton。如果这种方法不起作用,另一个选项是在自定义 UIButton 中覆盖 hitTest:withEvent: 方法,使其始终返回自身,并且不询问其子视图是否应处理该事件。有关更多详细信息,请参见UIView 文档


非常感谢。你是对的,我不应该启用用户交互。 - user281300
我无法告诉你这已经让我崩溃了多少次。我一直认为它需要被反转。现在我要去玩一个画板玩具。 - Ben Kreeger
1
谢谢 - 对于我的子类化按钮,userInteractionEnabled 没有起作用,但 hitTest 方法却起了作用:- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { return self; } - earnshavian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接