2010-07-07 7 views

Répondre

1

La façon dont je résolu ce problème est que je mets le NSButton à un type de « Push On Push Off » puis utilisé le code suivant dans mon gestionnaire d'événements clés:

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

Il mettra en évidence le bouton comme si l'utilisateur a cliqué dessus, puis il cliquera à nouveau dessus en une demi-seconde.

1

Je crois que la méthode -setHighlighted: de la cellule bouton contrôle si le bouton semble pressé ou non. Vous devrez peut-être également appeler le -setNeedsDisplay: sur le bouton après l'avoir changé, et il est possible que le bouton change l'état en surbrillance de sa cellule par lui-même, alors j'ai peur que vous ayez besoin de bidouiller pour que cela fonctionne.

(je dois admettre, cependant, que je ne suis pas tout à fait certain de tout cela.)

+0

Oui, qui l'a fait: [(NSButtonCell *) yourButton.cell setHighlighted: OUI]; pas besoin de setNeedsDisplay. Merci. – Borzh

Questions connexes