2010-07-07 11 views

risposta

1

Il modo in cui ho risolto questo è ho impostato il NSButton ad un tipo di 'spinta sulla spinta fuori' e poi usato il seguente codice nel mio gestore di eventi chiave:

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]; 
} 

Questo metterà in evidenza il pulsante come se l'utente ha cliccato su di esso, e quindi farà nuovamente clic su di esso in mezzo secondo.

1

Credo che il metodo -setHighlighted: della cella dei pulsanti controlli se il pulsante sembra premuto o meno. Potrebbe anche essere necessario chiamare il -setNeedsDisplay: sul pulsante dopo averlo modificato, ed è possibile che il pulsante cambi da solo lo stato evidenziato della cella, quindi temo che potrebbe essere necessario smanettare per farlo funzionare.

(Devo ammettere, però, che io non sono del tutto certo di tutto questo.)

+0

Sì, che lo ha fatto: [(NSButtonCell *) yourButton.cell setHighlighted: YES]; non c'è bisogno di setNeedsDisplay. Grazie. – Borzh

Problemi correlati