2010-04-07 8 views
0
UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 180, 180)]; 
myLabel.backgroundColor = [UIColor greenColor]; 
[self.view addSubview:myLabel]; 

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
[self addTarget:self action:@selector(show) forControlEvents:UIControlEventTouchDown]; 
myButton.frame = CGRectMake(80.0, 120.0, 30, 30); 
myButton.showsTouchWhenHighlighted = YES; 
[self addSubview:myButton]; 

ainsi les travaux de bouton (appel show:), mais utilisez [myLabel addSubview:myButton]; le bouton ne fonctionne pas. pas certain de pourquoi?UIButton sur UIScrollView ne peut pas fonctionner

EDIT & SOLUTION ---------------- ------------ Merci de

de UILabel par défaut ne gère pas tous les événements. Vous devez définir la propriété userInteractionEnabled de l'étiquette sur YES.

Aussi, vous feriez mieux de ne pas ajouter un UIButton sur le dessus d'un UILabel. UILabel par défaut ne gère aucun événement.

Répondre

1

Vous devez définir le userInteractionEnabled property de l'étiquette sur OUI.

Un bouton ne devrait pas être une sous-vue d'une étiquette de toute façon, c'est illogique. Faire les deux sous-vues d'un UIView.

+0

Merci, je pense que ce sont toutes des sous-classes de UIView. –

+0

@william: UILabel * est * une sous-classe de UIView, seulement qu'il désactive explicitement 'userInteractionEnabled'. – kennytm

Questions connexes