IBAction & Boutons par programmation
Je suis la création de boutons par programme et je veux ajouter des fonctionnalités selon lequel lorsqu'ils sont taraudés sur/pressé, ils restent mis en évidence, à moins que frappe à nouveau. Ce que je fais maintenant est de créer les boutons, puis d'essayer d'ajouter une IBAction. Cependant, le problème est que j'ai mon bouton de création dans une méthode et puis je ne suis pas sûr de la façon de référence sur le bouton dans mon IBAction. Voici mon code:
UIButton* testButn = [UIButton buttonWithType:UIButtonTypeCustom];
[testButn setFrame:CGRectMake(0, 135, 40, 38)];
[testButn setImage:[UIImage imageNamed:@"test_butn_un.png"] forState:UIControlStateNormal];
[testButn setImage:[UIImage imageNamed:@"test_butn_pressed.png"] forState:UIControlStateHighlighted];
[testButn addTarget:self action:@selector(staypressed:) forControlEvents:UIControlEventTouchUpInside];
[self.contentview addSubview:testButn
-(IBAction)staypressed:(id)sender{
//Not sure what to do here, since this method doesn't recognize testButn, How do I reference testButn
UIButton la touchepour = (UIButton)de l'expéditeur; la touchepour.selected = true; .sélectionné peut désactiver le bouton de manière peut-être juste changer de style.
Toujours pas de travail. C'est ce que j'ai maintenant: -(IBAction)stayPressed:(id)sender{ UIButton *testButn =(UIButton *)sender; [testButn setHighlighted:YES]; }
Toujours pas de travail. C'est ce que j'ai maintenant: -(IBAction)stayPressed:(id)sender{ UIButton *testButn =(UIButton *)sender; [testButn setHighlighted:YES]; }
OriginalL'auteur David West | 2013-01-31
Vous devez vous connecter pour publier un commentaire.
L'expéditeur est testButn. Vous devriez changer de stayPressed argument du type de (id) à (UIButton *)
À moins qu'une méthode d'action est connecté à plusieurs classes d'objets, il est préférable de remplacer l'id avec quelle que soit la classe de l'objet que vous utilisez. Cela peut être utile si vous êtes à la connexion d'éléments de l'IB, car elle ne permet pas de vous accrocher à la mauvaise nature de l'objet.
Le fait qu'il ne fonctionne pas n'est pas parce qu'il ne reconnaît pas votre bouton. Votre approche est erronée. Je pense que vous devez avoir une action connecté à toucher le sol, et peut-être définir l'état sélectionné pour OUI. Dans votre définition de bouton, vous devez définir un imageForState: pour l'état sélectionné. La façon dont vous le faites maintenant, cette méthode n'est pas appelée, jusqu'à toucher le haut.
Quelque chose comme ceci:
voir mon edit
si vous voyez mon code d'origine, j'ai une image pour UIControlStateHighlighted. Mon action est connecté à touchupinside. Quand je tape sur le bouton, il est mis en évidence mais il n'est pas rester en surbrillance.
vous avez besoin d'utiliser l'état sélectionné, pas mises en évidence. Voir mon edit. En utilisant le toucher des roues, je peux toujours vous connecter sur le bouton pour une autre action sur la touche jusqu'à l'intérieur.
Merci, oui mon problème a été mis en évidence à l'aide de l'état au lieu de la sélection.
OriginalL'auteur rdelmar
Vous avez besoin de jeter de l'expéditeur à UIButton.
ok, mais ce n'est pas de travail? Est la fonction en cours d'exécution? ou êtes-vous une erreur?
OriginalL'auteur Fogmeister
OriginalL'auteur Yildizoglu