【问题标题】:Issue with Quit application menu in cocoa application可可应用程序中的退出应用程序菜单问题
【发布时间】:2012-04-19 14:31:15
【问题描述】:

我有一个在 Mac OS 10.6.8 上运行的可可应用程序 我在应用程序的苹果菜单中添加一个条目,用于退出我的应用程序。代码是这样的:

item = [menu addItemWithTitle: @"Quit Myapp" , NSLocalizedString(@"Quit", nil), applicationName] action:@selector(terminate:) keyEquivalent:@"q"];

[item setTarget:NSAPP];

现在,我的问题是,当使用runModalNSOpenPanel 打开模式对话框时,此退出菜单项仍处于启用状态。其余菜单项照常禁用。我无法理解为什么。

如果我更改上面的代码,使菜单项的目标不是 NSApp,而是另一个可可对象,那么问题就消失了。

如果这是一个已知问题,请告诉我。将 NSApp 设置为菜单项的目标是否错误?

【问题讨论】:

    标签: macos cocoa


    【解决方案1】:

    为什么不使用 Interface Builder 中的应用程序菜单?

    【讨论】:

    • 我有自己的自定义类继承自 NSMenuItem。我正在以编程方式添加所有菜单项。
    【解决方案2】:

    我同意其他人的观点,即这样做可能是个坏主意。也就是说,将目标设置(或保留)为nil 以定位响应者链。当模型窗口启动时,这可能会使其禁用。

    更新:

    嗯。检查一个新的 MainMenu NIB,我看到 Quit 菜单项确实以应用程序对象为目标。所以,这可能不是问题。

    顺便说一下,在上面的代码 sn-ps 中,您的目标是 NSAPP,不管是什么,而不是 NSApp

    另外,-addItemWithTitle:... 的参数列表全乱了,毫无意义。您应该清理您的问题以反映实际代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      • 1970-01-01
      • 2011-01-23
      • 2012-05-09
      • 2017-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多