Risposte:
Il tuo pulsante deve essere buttonType
impostato su Personalizzato.
In IB è possibile deselezionare "Evidenzia regola immagine".
A livello di programmazione è possibile utilizzare theButton.adjustsImageWhenHighlighted = NO;
Opzioni simili sono disponibili anche per lo stato "disabilitato".
Oltre alla risposta sopra deselezionata "evidenzia regola immagine" in IB, assicurarsi che il tipo di pulsante sia impostato su PERSONALIZZATO.
Questo funzionerà per te:
[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 terza linea è il trucco qui ...
Funziona allo stesso modo per l'impostazione di image / backgroundImage
adjustsImageWhenHighlighted
proprietà di UIButton
sembra influire solo sull'immagine di sfondo.
A seconda di ciò che cambia dallo stato predefinito del pulsante evidenziato, è possibile chiamare un paio di metodi per impostarli su ciò che è necessario. Quindi, se l'immagine cambia, puoi farlo
[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Se il testo cambia, puoi farlo
[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
altre funzioni simili:
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state
OK, ecco una soluzione semplice se questo funziona per te, dopo una settimana di battute sulla testa, mi è venuto in mente di impostare l'evidenziato = NO per la prima riga del metodo IBAction per TouchUpInside o TouchDown, o qualsiasi altra cosa funzioni. Per me andava bene sul TouchUpInside.
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}
Per sviluppatori Swifty -
yourButton.adjustsImageWhenHighlighted = false