titlelabel settitle color buttons ios objective-c uibutton

ios - settitle - ¿Cómo deshabilitar el resaltado UIButton al hacer clic?



uicontrol swift (8)

¿Cómo deshabilitar el efecto de resalte de botón al hacer clic? Tiene un botón personalizado con color blanco bg y color de texto DarkGray. El problema es que el texto se vuelve blanco al hacer clic en el botón. Ya lo intenté pero ninguno de ellos funcionó:

a. Desmarque "Resaltado Ajusts Image" en el constructor de interfaces.

segundo. Configuración intentada resaltada = NO en el botón presionado método:

((UIButton *)sender).highlighted = NO

do. Intenté establecer el mismo título para el estado resaltado:

[button setTitle:[button titleForState:UIControlStateNormal] forState:UIControlStateHighlighted];

¿Alguna sugerencia?


Puedes hacerlo creando una extensión en Swift 4.2.

extension UIButton { open override var isHighlighted: Bool { didSet { super.isHighlighted = false } }}


Swift 4 con XCode 9

Simplemente desmarque "Resaltar Ajustar imagen" y si desea eliminar el fondo deshabilitado, desmarque "Desactivado Ajustar imagen" también.

Primero asegúrese de que su tipo de botón es "Personalizado"


Esta es una solución para botones que tienen imágenes. En el guión gráfico, hay una propiedad llamada HighlightedAdjustsImage que está activada de forma predeterminada. Desactiva eso y la imagen de tu botón no mostrará ninguna de las propiedades resaltadas.


Mis 2 centavos;) Swift 3 listo

class CustomButton: UIButton { override var isHighlighted: Bool { didSet { if (isHighlighted) { super.isHighlighted = false } } } }

Situación e historia

Había establecido imágenes para UIControlState.normal y UIControlState.selected , por lo que configurar UIButton.isSelected = true muestra la imagen seleccionada, de lo contrario, la imagen normal.

El problema que descubrimos fue cuando UIButton.isSelected = true , y durante resaltar / enfocar (al mantener presionado el botón y descartar el toque al deslizar) el botón muestra la imagen de UIControlState.normal , que se veía bastante feo para mi jefe: D

UIButton(type: UIButtonType.custom) varias soluciones, como UIButton(type: UIButtonType.custom) y UIButton.adjustsImageWhenHighlighted = false , none ayudó :(


Ninguna de las soluciones que encontré en línea funcionó para mí (incluidas las que se enumeran aquí), así que terminé haciendo esto en mi subclase UIButton personalizada :

// swift: override var isHighlighted: Bool { didSet { if isHighlighted { isHighlighted = false } } }

También tengo el buttonType configurado en .custom , pero probablemente no haga ninguna diferencia aquí.

Y ahora: ¡no más extrañas resaltados o animaciones en color!


Respuestas obsoletas antiguas y preguntas antiguas, pero la forma más nueva y sencilla es:

overlayButton.adjustsImageWhenHighlighted = false


También puede hacer que el tipo UIButton: custom de StoryBoard

Esto debería eliminar cualquier comportamiento del sistema para usted. (Yo creo que)


UIButton se resaltará al hacer clic, así que verifique la configuración del botón Cambie el color del título en la configuración del estado resaltado al mismo que el estado predeterminado O puede configurar:

[button setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];

Si desea controlar Resaltado por código, puede deshabilitar el resaltado normal por el botón de subclase y deshabilitar en touchesBegin:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ if (self.state == UIControlStateHighlighted) { [self setHighlighted:NO]; } }