Mon application contient un bouton PLAY/PAUSE qui est défini sur Basculer dans Interface Builder. Je l'utilise - comme son nom l'indique - pour lire mes assets ou pour les mettre en pause.
En outre, j'écoute la touche ESPACE pour activer la même fonctionnalité via le raccourci clavier. Par conséquent, j'utilise keyDown:
de NSResponder
dans mon application. Ceci est fait dans une autre sous-vue. Le bouton lui-même n'est pas visible pour le moment.
Je stocke l'état actuel de la lecture dans un singleton. Comment mettre à jour le titre/titre alternatif pour le bouton toogle en tenant compte du fait que son état aurait pu être modifié par le raccourci clavier? Puis-je utiliser des liaisons?Comment gérer un NSButton à bascule?
0
A
Répondre
2
J'ai réussi à implémenter la mise à jour continue du titre du bouton comme suit. J'ai ajouté une liaison programmatique pour l'état (dans l'exemple buttonTitle
). Notez que le IBAction
toggleButtonTitle:
ne modifie pas directement le titre du bouton! Au lieu de cela, la méthode updateButtonTitle
est responsable de cette tâche. Depuis self.setButtonTitle
est appelé la liaison susmentionnée est mis à jour immédiatement.
L'exemple suivant montre ce que j'ai essayé de décrire.
// BindThisAppDelegate.h
#import <Cocoa/Cocoa.h>
@interface BindThisAppDelegate : NSObject<NSApplicationDelegate> {
NSWindow* m_window;
NSButton* m_button;
NSString* m_buttonTitle;
NSUInteger m_hitCount;
}
@property (readwrite, assign) IBOutlet NSWindow* window;
@property (readwrite, assign) IBOutlet NSButton* button;
@property (readwrite, assign) NSString* buttonTitle;
- (IBAction)toggleButtonTitle:(id)sender;
@end
Et le fichier de mise en œuvre:
// BindThisAppDelegate.m
#import "BindThisAppDelegate.h"
@interface BindThisAppDelegate()
- (void)updateButtonTitle;
@end
@implementation BindThisAppDelegate
- (id)init {
self = [super init];
if (self) {
m_hitCount = 0;
[self updateButtonTitle];
}
return self;
}
@synthesize window = m_window;
@synthesize button = m_button;
@synthesize buttonTitle = m_buttonTitle;
- (void)applicationDidFinishLaunching:(NSNotification*)notification {
[self.button bind:@"title" toObject:self withKeyPath:@"buttonTitle" options:nil];
}
- (IBAction)toggleButtonTitle:(id)sender {
m_hitCount++;
[self updateButtonTitle];
}
- (void)updateButtonTitle {
self.buttonTitle = (m_hitCount % 2 == 0) ? @"Even" : @"Uneven";
}
@end
Si vous stockez votre état dans un ENUM ou entier une coutume NSValueTransformer
vous aidera à traduire un état dans son bouton titre équivalent. Vous pouvez ajouter le NSValueTransformer
aux options de reliure.
NSDictionary* options = [NSDictionary dictionaryWithObject:[[CustomValueTransformer alloc] init] forKey:NSValueTransformerBindingOption];
[self.button bind:@"title" toObject:self withKeyPath:@"buttonTitle" options:options];
Questions connexes
- 1. Comment effacer un KeyEquivalent pour un NSButton?
- 2. Comment rendre le NSButton au-dessus d'un NSButton?
- 3. Dragbable NSButton
- 4. Comment aligner à droite un commutateur à bascule à bascule dans jQuery mobile
- 5. NSButton + & - Button
- 6. Rendre mon NSSecureTextField déclencher un NSButton
- 7. NSButton dans NSTableView Programatically?
- 8. JQuery: bascule de bascule de déclenchement à bascule
- 9. Conserver NSButton en surbrillance
- 10. Événement MouseDown pour NSButton?
- 11. XCode IBAction NSButton pour afficher/masquer une image séparée?
- 12. Comment utiliser un UIButton comme un commutateur à bascule
- 13. débogage deuxième clic - bascule à bascule
- 14. Comment définir l'action d'un NSButton dans un scénario de liaison?
- 15. NSButtonCell vs NSButton
- 16. NSButton ne répondant pas à performSelector
- 17. Confondu avec NSButton Image
- 18. Comment empêcher un NSButton d'enregistrer des presses lorsqu'il est désactivé?
- 19. Comment gérer l'événement de bascule sur un autre bouton de fermeture dans jquery?
- 20. NSButton et NSButtonCell personnalisés
- 21. Comment créer NSButton avec NSMenu retardé?
- 22. créer un interrupteur à bascule lecture/pause
- 23. Equivalent clé NSButton
- 24. Comment puis-je forcer l'entrée dans un NSTextField à partir d'un NSButton?
- 25. codage Xcode aide NSButton
- 26. NSButton et Image Animation
- 27. Comment obtenir la taille préférée de NSButton?
- 28. Comment définirKeyKeyequivalent à la touche Entrée/Retour sur NSButton?
- 29. NSButton bleu highlight
- 30. Tableau de NSButton
Comment, en particulier, «écoutez-vous la touche d'espace»? –
@Peter Hosey J'ai ajouté quelques infos. Merci pour l'édition de la grammaire. – JJD
Où implémentez-vous 'keyDown:'? NSButton vous permet de définir un raccourci clavier directement dans Interface Builder. –