2010-07-07 7 views

Respuesta

1

La forma en que lo resolvió es fijo el NSButton a un tipo de 'Push On Push Off' y luego se usa el siguiente código en mi controlador de eventos clave:

NSButton *button = [self.superview viewWithTag:event.keyCode]; 
if (button != nil && button.state == NSOffState) { 
    [button performClick:event]; 
    [button performSelector:@selector(performClick:) withObject:event afterDelay:0.5]; 
} 

Esto pondrá de relieve el botón como si el usuario hizo clic en él y luego volverá a hacer clic en él en medio segundo.

1

Creo que el método de la celda del botón -setHighlighted: controla si el botón se ve presionado o no. También es posible que deba llamar al -setNeedsDisplay: en el botón después de cambiarlo, y es posible que el botón cambie el estado resaltado de su celda por sí mismo, así que me temo que es posible que tenga que manipularlo para que funcione.

(tengo que admitir, sin embargo, que no estoy del todo seguro de nada de esto.)

+0

Sí, que lo hizo: [(NSButtonCell *) yourButton.cell setHighlighted: YES]; no es necesario setNeedsDisplay. Gracias. – Borzh

Cuestiones relacionadas