问题
I'm trying to add subviews to a UIButton. This is working fine right now. But the button isn't clickable anymore as soon as I add the subviews.
I use the following code:
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];
The button works again if I cut out the 2 addsubviews. If anyone knows how to fix this it would be great!
THNX!!!
回答1:
I found a quick solutions. I needed to set the asyncimageview to the following:
asyncImage.userInteractionEnabled = NO;
asyncImage.exclusiveTouch = NO;
After this it worked!
回答2:
try:
[UIButton buttonWithType:UIButtonTypeCustom];
instead of:
[UIButton buttonWithType:UIButtonControlType];
回答3:
Have you tried to put:
[asyncImage setUserInteractionEnabled:YES];
回答4:
in the same sitiation i make this action: inherit from UIButton and add all labels and imageview's of button to self, finally put new button to view as last subview and add targets of self button to this last button(also set backgroundColor to clearColor for transparent). now it will be clickable and works fine.
回答5:
The important thing here is to make sure that userInteractionEnabled
will be set to NO
. Fortunately it works immediately for UIImageView
and UILabel
(maybe for other subclasses of a UIView
but those are the most popular subviews added to button) because by default for this classes it is set to NO
by default. Unfortunately it is set to YES
in UIView
so make sure to change it in that case. Messing around with any other flags shouldn't be necessary. The nature of problem is that many people do not know that default value of this flag is different in subclasses.
回答6:
In Swift, test that is you have your UIButton blocked
uibtn.userInteractionEnabled = false
uibtn.exclusiveTouch = false
来源:https://stackoverflow.com/questions/6675233/addsubview-to-uibutton