2010-11-07 63 views
2

我遇到了显示主窗口的Cocoa应用程序(源代码)。为什么我无法打开每个窗口的首选项?

只要这个窗口是关键,可以从主菜单以及通过撞击命令 - ,但打开Preferences窗口当主窗口不是关键,并从同一应用程序的另一个窗口是,NSMenuItem是变灰和键盘快捷方式不响应。

我检查了与主菜单相关联的xib文件,并且NSMenuItem正在向FirstResponder发送IBAction,它应该是NSApplication。

我错过了什么(我仍然是mac可可编程的新手)?我该如何解决这个问题,以便可以从每个应用程序窗口访问首选项?

回答

2

可能是原作者在某些情况下实施了- (BOOL)validateMenuItem:(NSMenuItem *)menuItem并返回NO

NSMenuValidationProtocoldocumentation

更新:另一个快速猜测:也许在打开第二个窗口后,处理菜单项IBAction的对象不再位于响应者链中。 NSMenuItems只有在动作选择器可以在响应者链中找到时才能使用。

+0

我检查了整个项目(文本),但它永远不会被调用或实施。 – rano 2010-11-07 09:45:18

+0

用另一个想法更新了我的原始答案。 – 2010-11-07 11:29:25

+0

第二次猜测也是我的想法。可能作者在主窗口或其窗口控制器中实现了'openPreferences:',而不是更全局的东西。所以,任何时候主窗口(和它的WC,如果有的话)都不在响应者链中,它的任何内容都不会响应该动作,所以将发送该动作的任何菜单项都被禁用。 – 2010-11-07 15:34:10

相关问题