【问题标题】:Hide NSMenu programmatically from NSStatusItem从 NSStatusItem 以编程方式隐藏 NSMenu
【发布时间】:2011-04-11 14:34:35
【问题描述】:

我有一个在系统状态栏中显示项目的应用程序,其中一个项目是带有 NSTextField 和 NSButton 的自定义视图。当用户点击状态栏项目时,它会显示菜单,用户输入一些文本并按下按钮。这会触发一个显示窗口的操作。

我现在遇到的问题是,按下按钮时会触发操作,但菜单仍然可见。我想隐藏菜单,因为该操作已被处理。

我已经通过 API 进行了搜索,但找不到操作方法。

有什么想法吗?

这就是我创建菜单的方式:

NSStatusBar *bar = [NSStatusBar systemStatusBar];

self.statusItem = [bar statusItemWithLength:NSVariableStatusItemLength];
[statusItem setImage:[NSImage imageNamed:@"icon_status_bar.png"]];
[statusItem setHighlightMode:YES];

NSMenuItem *textInputItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""];
[textInputItem setView:myCustomView];  // created on the Nib file...

NSMenu *menu = [[NSMenu alloc] initWithTitle:NSLocalizedString(@"statusBarMenuTitle", @"")];
[menu addItem:textInputItem];

[statusItem setMenu:menu];

[textInputItem release];
[menu release];

【问题讨论】:

    标签: cocoa macos


    【解决方案1】:

    在docs 中并不明显,但[menu cancelTracking] 是你想要的。

    cancelTracking
    Dismisses the menu and ends all menu tracking.
    - (void)cancelTracking
    

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 1970-01-01
      • 2015-05-01
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      • 1970-01-01
      相关资源
      最近更新 更多