2017-02-08 1 views
0

J'ai un objet de menu Interface Builder NSMenu. J'ai ajouté ma classe personnalisée "StatusBarMenu".Le délégué NSMenu ne déclenche pas menuWillOpen

Le fichier StatusBarMenu.h ressemble à ceci:

@interface StatusBarMenu : NSMenu <NSMenuDelegate> 

Le fichier StatusBarMenu.c ressemble à ceci:

- (void)menuWillOpen:(NSMenu *)menu { 
    `NSLog(@"open");` 
} 

Le menu est attribué dans le AppDelegate.c comme suit:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    self.statusBar = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; 
    self.statusBar.highlightMode = YES; 
    [self.statusBar setMenu:self.statusMenu]; 
} 

Et le AppDelegate.h:

#import <Cocoa/Cocoa.h> 
#import "StatusBarMenu.h" 
@interface AppDelegate : NSObject <NSApplicationDelegate> 
@property (strong, nonatomic) NSStatusItem *statusBar; 
@property (weak) IBOutlet StatusBarMenu *statusMenu; 

Le menu s'ouvre, mais menuWillOpen n'est pas appelé. Ai-je raté quelque chose?

J'apprécie toute aide! Merci.

Répondre

1

Vous devez définir le délégué, que ce soit dans Interface Builder par une connexion (statusMenu>delegate-AppDelegate) ou dans le code dans applicationDidFinishLaunching

self.statusMenu.delegate = self; 
+0

Merci pour la réponse rapide et utile. Cela a fait l'affaire! –