Réponses:
Votre bouton doit avoir sa valeur buttonType
Personnalisée.
Dans IB, vous pouvez décocher "Highlight ajuste l'image".
Vous pouvez utiliser par programme theButton.adjustsImageWhenHighlighted = NO;
Des options similaires sont également disponibles pour l'état "désactivé".
En plus de la réponse ci-dessus consistant à décocher «la mise en évidence ajuste l'image» dans IB, assurez-vous que le type de bouton est défini sur PERSONNALISÉ.
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 troisième ligne est le truc ici ...
Cela fonctionne de la même manière pour la configuration de l'image / backgroundImage
adjustsImageWhenHighlighted
propriété de UIButton
semble affecter uniquement l'image d'arrière-plan.
En fonction de ce qui change de l'état par défaut à l'état en surbrillance du bouton, vous pouvez appeler quelques méthodes pour les définir selon vos besoins. Donc, si l'image change, vous pouvez le faire
[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Si le texte change, vous pouvez faire
[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
autres fonctions similaires:
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state
OK, voici une solution simple si cela fonctionne pour vous, après une semaine à me cogner la tête, il m'est finalement venu à l'esprit de simplement mettre en surbrillance = NON pour la 1ère ligne de la méthode IBAction pour TouchUpInside ou TouchDown, ou tout ce qui fonctionne. Pour moi, c'était bien sur le TouchUpInside.
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}
Pour Swifty Developer -
yourButton.adjustsImageWhenHighlighted = false