【问题标题】:NSMenu delegate does not trigger menuWillOpenNSMenu 委托不触发 menuWillOpen
【发布时间】:2017-02-08 21:26:07
【问题描述】:

我有一个 Interface Builder NSMenu-Object。我添加了我的自定义类“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。 我错过了什么吗?

感谢您的帮助! 谢谢。

【问题讨论】:

    标签: objective-c cocoa nsmenu nsstatusbar


    【解决方案1】:

    您必须在 Interface Builder 中通过连接(statusMenu > delegateAppDelegate)或在 applicationDidFinishLaunching 中的代码中设置委托

    self.statusMenu.delegate = self;
    

    【讨论】:

    猜你喜欢
    • 2016-11-22
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多