NSMenu 委托不会触发 menuWillOpen
NSMenu delegate does not trigger menuWillOpen
我有一个 Interface Builder NSMenu 对象。我添加了我的自定义 Class "StatusBarMenu".
StatusBarMenu.h
文件如下所示:
@interface StatusBarMenu : NSMenu <NSMenuDelegate>
StatusBarMenu.c
文件如下所示:
- (void)menuWillOpen:(NSMenu *)menu {
`NSLog(@"open");`
}
菜单在AppDelegate.c
中分配如下:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
self.statusBar = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
self.statusBar.highlightMode = YES;
[self.statusBar setMenu:self.statusMenu];
}
和 AppDelegate.h
:
#import <Cocoa/Cocoa.h>
#import "StatusBarMenu.h"
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (strong, nonatomic) NSStatusItem *statusBar;
@property (weak) IBOutlet StatusBarMenu *statusMenu;
菜单打开,但未调用 menuWillOpen。
我错过了什么吗?
感谢您的帮助!
谢谢。
您必须在 Interface Builder 中通过连接(statusMenu
> delegate
到 AppDelegate
)或在 applicationDidFinishLaunching
[=15 中的代码中设置委托=]
self.statusMenu.delegate = self;
我有一个 Interface Builder NSMenu 对象。我添加了我的自定义 Class "StatusBarMenu".
StatusBarMenu.h
文件如下所示:
@interface StatusBarMenu : NSMenu <NSMenuDelegate>
StatusBarMenu.c
文件如下所示:
- (void)menuWillOpen:(NSMenu *)menu {
`NSLog(@"open");`
}
菜单在AppDelegate.c
中分配如下:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
self.statusBar = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
self.statusBar.highlightMode = YES;
[self.statusBar setMenu:self.statusMenu];
}
和 AppDelegate.h
:
#import <Cocoa/Cocoa.h>
#import "StatusBarMenu.h"
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (strong, nonatomic) NSStatusItem *statusBar;
@property (weak) IBOutlet StatusBarMenu *statusMenu;
菜单打开,但未调用 menuWillOpen。 我错过了什么吗?
感谢您的帮助! 谢谢。
您必须在 Interface Builder 中通过连接(statusMenu
> delegate
到 AppDelegate
)或在 applicationDidFinishLaunching
[=15 中的代码中设置委托=]
self.statusMenu.delegate = self;