2012-04-19 73 views
0

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

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

[item setTarget:NSAPP];

现在,我的问题是,使用的NSOpenPanelrunModal被打开一个模式对话框时,该退出菜单项仍处于启用状态。其他菜单项像往常一样被禁用。我无法理解为什么。

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

有人请让我知道,如果这是一个已知的问题。将NSApp设置为菜单项的目标是错误的吗?

回答

0

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

+0

我有自己定制的类继承自NSMenuItem。我以编程方式添加所有菜单项。 – Aarkan 2012-04-19 14:41:18

+0

你为什么要这样做? – 2012-04-19 23:27:33

0

我同意其他人这样做可能是一个坏主意。也就是说,设置(或离开)目标为nil以锁定响应者链。这可能会使模型窗口启动时禁用它。

更新:

嗯。检查一个新的MainMenu NIB,我发现Quit菜单项实际上是针对应用程序对象的。所以,这可能不是问题。

顺便说一句,在上面的代码片段中,您的目标是NSAPP,不管是什么,而不是NSApp

此外,参数列表-addItemWithTitle:...都搞砸了,没有任何意义。你应该清理你的问题以反映实际的代码。