Antworten:
Ihre Schaltfläche muss buttonType
auf Benutzerdefiniert eingestellt sein.
In IB können Sie "Markierung passt Bild an" deaktivieren.
Programmatisch können Sie verwenden theButton.adjustsImageWhenHighlighted = NO;
Ähnliche Optionen sind auch für den Status "Deaktiviert" verfügbar.
Stellen Sie zusätzlich zu der obigen Antwort auf das Deaktivieren von "Hervorheben passt das Bild an" in IB sicher, dass der Schaltflächentyp BENUTZERDEFINIERT eingestellt ist.
Dies wird für Sie funktionieren:
[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];
3. Zeile ist der Trick hier ...
Dies funktioniert genauso für das Festlegen von image / backgroundImage
adjustsImageWhenHighlighted
Eigenschaft von UIButton
scheint nur das Hintergrundbild zu beeinflussen.
Abhängig davon, was sich vom Standardzustand zum hervorgehobenen Status der Schaltfläche ändert, können Sie verschiedene Methoden aufrufen, um sie auf die gewünschten Einstellungen festzulegen. Wenn sich das Bild ändert, können Sie dies tun
[myButton setImage:[myButton imageForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Wenn sich der Text ändert, können Sie dies tun
[myButton setTitle:[myButton titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
andere ähnliche Funktionen:
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
- (void)setTitleShadowColor:(UIColor *)color forState:(UIControlState)state
OK, hier ist eine einfache Lösung, wenn dies für Sie funktioniert. Nachdem ich eine Woche lang mit dem Kopf darauf geschlagen hatte, kam mir schließlich der Gedanke, für die erste Zeile der IBAction-Methode für TouchUpInside oder TouchDown oder was auch immer funktioniert, einfach hervorgehoben = NEIN zu setzen. Für mich war es auf dem TouchUpInside in Ordnung.
-(IBAction)selfDismiss:(id)sender {
self.btnImage.highlighted = NO;
NSLog(@"selfDismiss");
etc, etc, etc.
}
Für schnelle Entwickler -
yourButton.adjustsImageWhenHighlighted = false