当窗口失去焦点时,为什么此NSMenuItem被禁用?

亚米尔

我正在以编程方式创建NSMenu带有的NSMenuItem当应用程序窗口处于活动状态时,将NSMenuItem启用:

启用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;
}

是什么导致此问题?不管应用程序是否处于关注状态,我如何才能使其启用?

麦克马德

因为菜单项是基于响应者链启用的。

在您的情况下,可以使用terminate:选择器代替自己选择器。
正如在NSApplication类(也是响应者链的一部分)中声明的那样,该项目将始终处于活动状态。

NSMenuItem *quit = [[NSMenuItem alloc] initWithTitle:@"Quit" action:@selector(terminate:) keyEquivalent:@""];

有关更多信息,请参见:可可事件处理指南

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当窗口失去焦点时,Vb.NET禁用计时器

失去焦点时,全屏GLFW窗口消失

失去焦点时如何隐藏QML窗口

弹出窗口失去焦点时存储数据

为什么活动的Firefox窗口有时会失去焦点?

模块被禁用-但是为什么呢?

为什么我的PCIe NIC被禁用?

为什么在单击弹出窗口时将焦点从formView移除?

为什么当按下一个键时我的<input>失去焦点

颤振:当 textField 失去焦点时,为什么输入内容会消失?

尝试创建QnA Maker服务时,为什么所有定价层都被禁用?

在失去焦点时禁用datepicker文本框转换/验证

更改焦点时禁用窗口调整大小

使用“键盘”失去焦点时打开新窗口

当我单击主窗口时,希望jTextField失去焦点

当窗口失去焦点时,HUD会导致Firefox滞后

关闭字体对话框时窗口失去焦点

为什么我的Ajax元素立即失去焦点?

诊断消息窗口被禁用。

为什么HTML表单输入会自动被禁用?

为什么“不分割”标志不被禁用?

为什么我的WPF ContextMenu项被禁用?

为什么“导出到新的流分析项目”被禁用

为什么我的某些 Visual Studio Code 扩展被禁用

当HTML输入时间控件绑定到blazor中的某个属性时,为什么它失去焦点?

为什么在按下Tab键时,此焦点事件会破坏html样式?

当失去焦点时,JScrollPane失去滚动位置

写作时输入失去焦点

当窗口失去对Win32的关注时,为什么覆盖的非客户区域显示默认值?