我以编程方式创建NSMenu
NSMenuItem
。当应用程序的窗口处于活动状态时,NSMenuItem
已启用:
但是,只要窗口失去焦点,菜单项就会被禁用:
以下是我创建NSMenu
:
- (void)_quit
{
[[NSApplication sharedApplication] terminate:nil];
}
- (NSMenu *)_setupMenu
{
NSMenu *statusMenu = [[NSMenu alloc] initWithTitle:@"Demo"];
NSMenuItem *quit = [[NSMenuItem alloc] initWithTitle:@"Quit" action:@selector(_quit) keyEquivalent:@""];
[statusMenu addItem:quit];
return statusMenu;
}
导致此问题的原因是什么?无论应用程序是否处于关注状态,我该如何启用它?
答案 0 :(得分:2)
因为菜单项是基于响应者链启用的。
在您的情况下,您可以使用terminate:
选择器而不是您自己的选择器
由于这是在NSApplication
类中声明的,它也是响应者链的一部分,因此该项将始终处于活动状态。
NSMenuItem *quit = [[NSMenuItem alloc] initWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@""];
有关此内容的更多信息:Cocoa Event Handling Guide