Comment désactiver les effets de surbrillance des boutons au clic? Avoir un bouton personnalisé avec la couleur blanche bg et la couleur du texte DarkGray. Le problème est que le texte devient blanc en cliquant sur un bouton. Déjà essayé mais aucun d'entre eux n'a fonctionné:
une. A décoché "Ajuster l'image en surbrillance" dans le générateur d'interface.
b. Méthode d'essai mise en surbrillance = NON dans la méthode du bouton enfoncé:
((UIButton *)sender).highlighted = NO
c. J'ai essayé de définir le même titre pour l'état élevé:
[button setTitle:[button titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];
Aucune suggestion?
UIButton sera mis en surbrillance au clic, cochez le réglage du bouton Modifiez la couleur du titre en surbrillance. Config doit être identique à celle par défaut Ou vous pouvez définir:
[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
Si vous voulez contrôler Surligné par code, vous pouvez désactiver le bouton surligné par la sous-classe normal et le désactiver dans touchesBegin:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
if (self.state == UIControlStateHighlighted) {
[self setHighlighted:NO];
}
}
Vous pouvez également créer le type UIButton: personnalisé à partir de StoryBoard
Cela devrait supprimer tout comportement du système pour vous. (Je pense)
Ceci est une solution pour les boutons qui ont des images. Dans le storyboard, il existe une propriété appelée HighlightedAdjustsImage
qui est activée par défaut. Désactivez cela et votre image de bouton ne montrera aucune propriété en surbrillance.
vieilles réponses obsolètes et vieille question, mais la façon la plus récente et la plus simple est
overlayButton.adjustsImageWhenHighlighted = false
Aucune des solutions que j'ai trouvées en ligne ne fonctionnait pour moi (y compris celles répertoriées ici), alors j'ai fini par le faire dans ma custom UIButton
subclass :
// Swift:
override var isHighlighted: Bool {
didSet { if isHighlighted { isHighlighted = false } }
}
La variable buttonType
est également définie sur .custom
, mais cela ne fait probablement aucune différence ici.
Et maintenant: plus de surbrillance bizarre ou d'animations de couleurs!
Vous pouvez le faire en créant une extension dans Swift 4.2
extension UIButton {
open override var isHighlighted: Bool {
didSet {
super.isHighlighted = false
}
}}
Mes 2 centimes;) Swift 3 prêt
class CustomButton: UIButton {
override var isHighlighted: Bool {
didSet {
if (isHighlighted) {
super.isHighlighted = false
}
}
}
}
Situation et histoire
J'avais défini les images pour UIControlState.normal
et UIControlState.selected
, donc régler UIButton.isSelected = true
affiche l'image sélectionnée, sinon l'image normale.
Nous avons découvert le problème lorsque UIButton.isSelected = true
et pendant la surbrillance/la mise au point (maintenez le bouton enfoncé tout en le supprimant en effleurant). Le bouton affiche une image pour UIControlState.normal
, qui était plutôt moche pour mon patron: D
J'ai essayé plusieurs solutions, telles que UIButton(type: UIButtonType.custom)
et UIButton.adjustsImageWhenHighlighted = false
, aucune n'a aidé :(