Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

addSubView to UIButton

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!!!

like image 367
Jos Avatar asked Jul 13 '11 07:07

Jos


3 Answers

I found a quick solutions. I needed to set the asyncimageview to the following:

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

After this it worked!

like image 94
Jos Avatar answered Oct 17 '22 10:10

Jos


try:

[UIButton buttonWithType:UIButtonTypeCustom];

instead of:

[UIButton buttonWithType:UIButtonControlType];

like image 35
user842059 Avatar answered Oct 17 '22 10:10

user842059


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.

like image 2
Julian Avatar answered Oct 17 '22 11:10

Julian