2012-12-11 1 views
1

J'écris une sous-classe UIButton personnalisée, pour créer mon propre bouton entièrement personnalisé pour avoir le contrôle total. Pourtant, j'ai des problèmes quand j'essaie d'ajouter une sous-vue à la vue de ce UIButton. Les blocs les sous-vue événements « toucher » donc il ne sera pas bulle le UIButton lui-même ..Sous-vue de la classe UIButton personnalisée ne déclenche pas cliquer

Ceci est une démonstration: J'ai d'abord créer mon CustomNavigationButton, avec un cadre .. C'est magenta. Je peux voir le magenta sur l'écran, donc c'est là. Deuxièmement, j'ajoute une sous-vue à ce CustomNavigationButton (qui est vert), je peux voir le vert donc c'est là, mais si je clique sur le rectangle vert (subview), le "UIControlEventTouchUpInside" ne se fait pas appeler sur mon CustomNavigationButton ..

Dans mon AppDelete:

CustomNavigationButton* mapBtn = [[CustomNavigationButton alloc] initWithFrame:CGRectMake(0, 0, 100, 25)]; 
mapBtn.backgroundColor = [UIColor magentaColor]; 
[mapBtn addTarget:self action:@selector(goMapHandler:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:mapBtn]; 

Et voici ma classe CustomNavigationButton (qui est une sous-classe de UIButton)

@implementation CustomNavigationButton 
@synthesize bg; 
- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 

     // STORE INITIAL FRAME 
     self.initialFrame = frame; 

     bg = [[UIView alloc] initWithFrame:CGRectMake(0, 20, 40, 40)]; 
     bg.backgroundColor = [UIColor greenColor]; 
     [bg setUserInteractionEnabled:YES]; 
     [self addSubview:bg];  

    } 
    return self; 
} 
@end 

Répondre

4

je me suis dit comment d o ça! Si « bg » est le sous-vue j'ajouter à la UIButton, alors vous devriez faire:

bg.userInteractionEnabled = NO; 
bg.exclusiveTouch = NO; 

Mais gardez à l'esprit que, si votre sous-vue étend le cadre du UIButton, une touche ne se produira pas ! Vous pouvez vérifier si votre sous-vue dépasse le UIButton en donnant à l'UIButton une couleur de fond.

+1

Merci, ça me rendait fou! – Jano

Questions connexes