向 UIButton 添加子视图

问题描述 投票:0回答:7

我正在尝试将子视图添加到

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:
方法,该按钮将再次起作用。如果有人知道如何解决这个问题那就太好了!

iphone objective-c ios uibutton addsubview
7个回答
86
投票

我找到了一个快速的解决方案。我需要将

asyncImageView
设置为以下内容:

asyncImage.userInteractionEnabled = NO;
asyncImage.exclusiveTouch = NO;

此后,成功了!


3
投票

尝试:

[UIButton buttonWithType:UIButtonTypeCustom];

而不是:

[UIButton buttonWithType:UIButtonControlType];


2
投票

这里重要的是确保

userInteractionEnabled
将设置为
NO
。幸运的是,它立即适用于
UIImageView
UILabel
(也许适用于
UIView
的其他子类,但这些是添加到按钮中最流行的子视图),因为默认情况下,此类默认设置为
NO
。不幸的是,它在
YES
中设置为
UIView
,因此请务必在这种情况下更改它。没有必要与任何其他标志混淆。问题的本质是很多人不知道这个标志的默认值在子类中是不同的。


2
投票

我向子视图按钮添加了一个标签。 很长一段时间我一直在寻找为什么按钮中的文本不可点击。 ✅ 此线程中的解决方案:

myLable.isUserInteractionEnabled = false 

1
投票

你有没有尝试过:

[asyncImage setUserInteractionEnabled:YES];

1
投票

在同样的情况下我做了这个动作: 继承自 UIButton 并将按钮的所有标签和图像视图添加到自身,最后将新按钮作为最后一个子视图进行查看,并将自身按钮的目标添加到最后一个按钮(还将背景颜色设置为透明颜色)。现在它可以点击并且工作正常。


0
投票

在 Swift 中,测试你的 UIButton 是否被阻止

uibtn.userInteractionEnabled = false
uibtn.exclusiveTouch = false
© www.soinside.com 2019 - 2024. All rights reserved.