我正在尝试将子视图添加到
UIButton
。现在效果很好。但是一旦我添加子视图,该按钮就不再可单击。
我使用以下代码:
UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(column*100+24, row*80+10, 64, 64);
[button addSubview:asyncImage];
[button addSubview:price];
[button addTarget:self
action:@selector(buttonClicked:)
forControlEvents:UIControlEventTouchUpInside];
如果我删除 2 个
addSubview:
方法,该按钮将再次起作用。如果有人知道如何解决这个问题那就太好了!
我找到了一个快速的解决方案。我需要将
asyncImageView
设置为以下内容:
asyncImage.userInteractionEnabled = NO;
asyncImage.exclusiveTouch = NO;
此后,成功了!
尝试:
[UIButton buttonWithType:UIButtonTypeCustom];
而不是:
[UIButton buttonWithType:UIButtonControlType];
这里重要的是确保
userInteractionEnabled
将设置为 NO
。幸运的是,它立即适用于 UIImageView
和 UILabel
(也许适用于 UIView
的其他子类,但这些是添加到按钮中最流行的子视图),因为默认情况下,此类默认设置为 NO
。不幸的是,它在 YES
中设置为 UIView
,因此请务必在这种情况下更改它。没有必要与任何其他标志混淆。问题的本质是很多人不知道这个标志的默认值在子类中是不同的。
我向子视图按钮添加了一个标签。 很长一段时间我一直在寻找为什么按钮中的文本不可点击。 ✅ 此线程中的解决方案:
myLable.isUserInteractionEnabled = false
你有没有尝试过:
[asyncImage setUserInteractionEnabled:YES];
在同样的情况下我做了这个动作: 继承自 UIButton 并将按钮的所有标签和图像视图添加到自身,最后将新按钮作为最后一个子视图进行查看,并将自身按钮的目标添加到最后一个按钮(还将背景颜色设置为透明颜色)。现在它可以点击并且工作正常。
在 Swift 中,测试你的 UIButton 是否被阻止
uibtn.userInteractionEnabled = false
uibtn.exclusiveTouch = false