2011-10-26 9 views
8

He creado un UIButton personalizado (subclase UIButton) para mi aplicación. Dentro de la implementación de este botón, ¿cómo alteraría el color de fondo cuando se presione? (Se debe volver a él es el fondo normal cuando se deprime. Actualmente estoy usando Core Graphics para dibujar un fondo degradado.)Detectando cuando se ha presionado un UIButton personalizado

He tratado de ramificación en drawRect: (comprobación de self.selected y self.highlighted, pero ningún cambio ocurre porque drawRect no está siendo llama en el caso del tacto.

Cualquier sugerencia o ejemplos de código son apreciados.

Respuesta

15

intente llamar [self setNeedsRedraw] en su caso táctil.


Asker proporcionó una solución basada en esta respuesta y los comentarios a continuación.

Solución

usados:

[self addTarget:self action:@selector(buttonPressed) forControlEvents:UIControlEventTouchDown]; 
[self addTarget:self action:@selector(buttonDepressed) forControlEvents:UIControlEventTouchUpInside | UIControlEventTouchUpOutside | UIControlEventTouchCancel]; 

Cuando los selectores son funciones personalizadas que realizan el cambio de fondo.

+0

Necesito capturar este evento táctil dentro de la implementación del botón para establecer su color de fondo. –

+2

Siempre puede agregarse como oyente a sus propios eventos táctiles. Pruebe '[self addTarget: self action: @selector (setNeedsRedraw) forControlEvents: UIControlEventTouchDown];' –

+1

Gracias. Usando 'addTarget' en' self' funcionó. Agregué mi solución real a tu respuesta. –

Cuestiones relacionadas