打开窗口后无法选择NSMenuItem

时间:2014-02-27 12:23:16

标签: objective-c macos nsmenu

我遇到的问题与此thread非常相似。

我以编程方式创建NSMenu并添加我的项目。一个选项显示一个窗口。这按预期工作。但是,当我关闭窗口时,我无法再选择菜单中的任何选项。

AppDelegate.m

- (void)createMenu {
      NSMenu *statusMenu = [[NSMenu alloc] initWithTitle:@""];

      NSMenuItem *historyItem = [[NSMenuItem alloc] initWithTitle:@"History" action:@selector(onHistory:) keyEquivalent:@""];

      [statusMenu addItem:historyItem];

      NSImage *statusImage = [NSImage imageNamed:@"icon.png"];
      [_item setImage:statusImage];
      [_item setMenu:statusMenu];
}

- (void)onHistory:(id)sender {
      OBHistoryWindowController *historyWindowController = [[OBHistoryWindowController alloc] initWithWindowNibName:@"OBHistoryWindowController"];
      historyWindowController.managedContext = self.managedObjectContext;
      [historyWindowController showWindow];
}

OBHistoryWindowController.m

- (void)showWindow {
      [NSApp runModalForWindow:self.window];
}

我猜我需要以某种方式关闭窗口让焦点回到菜单但我不能为我的生活弄清楚如何。

1 个答案:

答案 0 :(得分:1)

听起来你还没有停止模态循环。正如runModalForWindow:的文档所说,“您可以通过调用模态窗口代码中的stopModalstopModalWithCode:abortModal方法来退出模态循环。”