问题标签 [nsmenuitem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2073 浏览

objective-c - 单击后从 NSMenuItem 中删除突出显示?

我已经向我的 NSMenuItem 子类(位于 NSStatusMenu 中)添加了一个自定义视图,这意味着默认情况下它不会以蓝色/灰色背景“突出显示”。

我通过使用以下代码实现了这一点:

菜单项很好地突出显示,我也可以单击每个项目;但是,当我单击它们时,一旦我重新打开菜单,它们似乎会保持isHighlighted状态。

有没有办法改变它,所以当我点击时,当我下次打开菜单时,突出显示的状态会被删除?

0 投票
2 回答
654 浏览

objective-c - NSMenuItem 的 NSView 未在子菜单中突出显示

我有一个NSStatusItem显示NSMenu完整的NSView子类。drawRect:我在我的子类中重写NSView以实现突出显示,NSMenu并且在根菜单中一切正常,但由于某种原因,它在根菜单的子菜单中不起作用。我在我的子类中添加了一些NSLog语句,并注意到子菜单中的视图甚至没有被调用。有任何想法吗?NSViewdrawRect:

我可以发布我用来突出显示视图的代码,但我认为它没有必要,因为drawRect:甚至没有被调用。让我知道您是否需要查看可能有帮助的任何其他代码。

0 投票
1 回答
1252 浏览

objective-c - 在 NSMenuItem 内带有 NSView 的假 NSWindow

在开始之前,我应该说我知道这似乎是一个很长的尝试,但我认为值得一试。

我现在正在开发的一个应用程序是 Mac 状态栏应用程序。它在菜单栏中有一个 NSStatusItem,当点击它时,它会显示一个带有弹出窗口外观的自定义窗口(就像在 iPad 上或在 mac 上的 Fantastical 一样。)无论如何,我开始通过在状态项菜单中插入一个 nsmenu 项目来测试它。该视图已为其窗口上的背景颜色设置了清晰的颜色。但是,这仍然不太有效,如下图所示

在此处输入图像描述

  1. 物品上方和下方仍有一条小的白色细线
  2. 清晰区域不清晰,就像上面有模糊滤镜一样

除此之外,它的效果非常好。我只是不知道其他人是否曾经尝试过这样的事情,并想出如何克服这两个问题,这似乎是唯一阻止它工作的事情。

如果没有办法做到这一点,我可能不得不为 NSStatusItem 使用自定义视图,这样我就可以在屏幕上获取坐标,将我自己的窗口定位在 NSStatusItem 下方。

0 投票
1 回答
1663 浏览

cocoa - 在显示主机菜单时更新 NSMenuItem

我有一个NSMenuItem我需要更新以显示进度的东西(就像 Time machine 使用它的备份一样)。问题是当我设置一个新titleNSMenuItem并且title没有改变时。

当我关闭并重新打开菜单时,它实际上正在发生变化,但我想在用户查看它时更新它。

我还尝试删除一个项目并重新插入它,但没有结果。

任何指针?

0 投票
1 回答
588 浏览

objective-c - 如何一直关注 NSStatusItem 直到再次切换它

我正在构建一个使用 NSStatusItem 的应用程序。我希望我的 NSStatusItem 在单击时打开并保持打开状态,直到用户再次单击 NSStatusItem。截至目前,它打开了菜单,但是当我点击离开它或点击另一个应用程序时,NSStatusItem 失去了焦点。我希望 NSStatusItem 的菜单保持打开状态,直到用户单击关闭它。到目前为止,这是我的代码,只是为了制作 NSStatusItem。谢谢

0 投票
0 回答
539 浏览

objective-c - 如何在菜单中创建 NSWindow

我正在 Xcode 4 中创建一个 menulet 应用程序,我试图弄清楚如何显示一个在单击 menulet 图标时将出现的窗口。我希望窗口显示为正常的 NSWindow。

我查看了 MAAttatchedWindow 源代码,这似乎对我没有帮助。有人可以解释一下如何在单击时使菜单下拉窗口吗?

我相信我应该使用 setView: 函数为 NSStatusItem 创建一个自定义视图,但不能完全弄清楚应该如何布置代码。到目前为止我有这个:

如何让 MAAttachedWindow 显示为 NSView?

0 投票
2 回答
1764 浏览

cocoa - 如何动态调整 NSMenu 的大小以适应其内容?

我有一个像这样的标准 NSMenu

初始菜单

此菜单是使用以下代码创建的:

如您所见,菜单中的每个选项都有一个“重复”项。option当您在菜单可见时按下 (alt) 键时,将显示该项目的副本。

问题是菜单大小在显示备用菜单项时会发生变化,因为此菜单的标题大于原始菜单,并且它永远不会恢复为原始大小,从而产生以下结果:

在此处输入图像描述

知道如何解决吗?谢谢

0 投票
1 回答
385 浏览

macos-carbon - 如何删除自定义视图上方的 NSMenuItem 间隙

我正在寻找以下帖子中讨论的内容。

NSMenuItem 自定义视图上方的间隙。

对状态栏项的 NSMenu 进行逆向工程

我尝试了Pierre Bernard提供的碳代码

最初,我遇到了与其他错误一样的错误“在 InstallControlEventHandler 线上的 EXC_BAD_ACCESS”。我大量使用代码并意外找到了解决方案。

我刚刚将 InstallControlEventHandler 函数调用替换为 HIViewInstallEventHandler,一切正常。

希望这对其他人有帮助。让我知道是否有人需要进一步澄清。

特别感谢 Pierre Bernard 提供了很棒的代码。

谢谢

0 投票
1 回答
15178 浏览

cocoa - 以编程方式创建带有 NSMenuItems 的 NSMenu?

首先,我想指出这个问题可能已经被问过了,我只是无法从他们那里找到任何答案。

所以,我正在以编程方式尝试创建一个 NSMenu 和 NSMenuItem 到主栏,所以 fe。NSMenu 将是 File,然后它会有 3x NSMenuItem,新建、打开和保存。

但是没有任何效果,这就是我目前所拥有的:

但是什么都没有发生,我很确定我必须告诉应用程序它应该使用 fileMenu,但是我该怎么做,如果这不是问题,那是什么?我对这些东西很陌生,但对学习很感兴趣,所以任何提示都比没有好!

0 投票
1 回答
981 浏览

cocoa - 何时从 NSMenu 中删除动态 NSMenuItem

我有一个包含许多动态项目的 NSMenu。这些项目是在 NSMenuDelegate 的 menuNeedsUpdate 方法中创建的,并且每个都分配有一个代表对象。我正在寻找修剪对象图,并希望通过删除所有动态项目(并在重新打开菜单时重新创建它们)来在关闭菜单时重新获得一些内存。我遇到的问题是确切地知道应该在哪里以及如何处理。

该文档指出 NSMenu 的 menuDidClose 不是更新菜单内容的合适位置。我已经设置了一个通知来监听 NSMenuDidEndTrackingNotification 并在此时通过调用我的 NSMenu 的 removeItem: 方法来删​​除动态项目。这是处理这种情况的正确方法吗?

最后,我可以保证在 NSMenuItem 上调用 removeItem 将正确地取消任何可能分配给它的自定义视图以及任何子菜单吗?