164 votes

Comment désactiver l'état de contrôle de la mise en évidence d'un UIButton ?

J'ai un bouton UIButton qui, lorsqu'il est sélectionné, ne doit pas changer d'état lorsqu'il est touché. Le comportement par défaut est qu'il est en UIControlStateHighlighted lorsqu'il est touché, et cela me met en colère.

Des suggestions ?

1 votes

Vous devriez méditer :-P

334voto

Haydn Points 896

Votre bouton doit avoir son buttonType défini sur Personnalisé.

Dans IB, vous pouvez décocher la case "La mise en évidence ajuste l'image".

De manière programmatique, vous pouvez utiliser theButton.adjustsImageWhenHighlighted = NO;

Des options similaires sont également disponibles pour l'état "désactivé".

1 votes

Savez-vous par hasard ce que serait la version programmatique de ceci ? Pour l'instant, j'ai réussi à le faire fonctionner de façon artisanale en le désactivant et en le faisant passer pour un élément sélectionné.

100 votes

Uibutton.adjustsImageWhenHighlighted = NON ;

44 votes

Assurez-vous également que le type de bouton est réglé sur CUSTOM. (Comme Mosib Asad l'a mentionné dans une autre réponse)

41voto

Mosib Asad Points 154

En plus de la réponse ci-dessus, qui consiste à décocher l'option " highlight adjusts image " dans IB, assurez-vous que le type de bouton est défini sur CUSTOM.

3 votes

C'était la pièce manquante : bouton type CUSTOM. Merci !

1 votes

Et si je souhaite conserver le bouton UIB en tant que système, ne puis-je pas supprimer l'image d'ajustement de la surbrillance ?

39voto

Manish Ahuja Points 1611

Cela fonctionnera pour vous :

[button setBackgroundImage:[UIImage imageNamed:@"button_image"] forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected];
[button setBackgroundImage:[UIImage imageNamed:@"button_image_selected"] forState:UIControlStateSelected | UIControlStateHighlighted];

La 3ème ligne est le truc ici...

Cela fonctionne de la même manière pour le réglage de l'image/backgroundImage

1 votes

Cela fonctionne parfaitement pour moi. Le site adjustsImageWhenHighlighted propriété de UIButton semble n'affecter que l'image de fond.

0 votes

Sachez que si vous décidez d'attribuer une image à l'état "désactivé", vous ne devez pas appeler setBackgroundImage. Au lieu de cela, vous devez procéder comme suit : [button setImage:image forState:UIControlStateDisabled] ; Sachez également que, comme indiqué dans ce fil de discussion, la propriété UIButton adjustsImageWhenHighlighted n'a d'effet que sur l'image d'arrière-plan.

0 votes

Cette merveilleuse réponse devrait être référencée si votre objectif est de supprimer l'état de surbrillance du contrôle, et pas seulement de supprimer l'effet de surbrillance au clic.

28voto

KETAN Points 326
adjustsImageWhenHighlighted = NO;

23voto

Tim Points 191
button.adjustsImageWhenDisabled = NO;

est également utile pour avoir votre propre apparence d'un bouton désactivé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X