问题标签 [nsmenu]

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 投票
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 回答
580 浏览

nswindow - 使 MAAttachedWindow 表现得像 NSMenu

我已经阅读了本网站上的一篇文章,内容是当用户在 MAAttachedWindow 外部单击时如何隐藏它。在这篇文章中,我将 MAAttachedWindow 与 statusItem 一起使用。 单击外部时隐藏 MAAttachedWindow。它说我应该在 Window 退出其键状态时隐藏它。

但我想知道是否有任何其他方法代替窗口的关键状态。使用 key-status 会增加另一个问题:为了在窗口退出 key-state 时获得通知,所有其他应用程序必须之前已被忽略(这意味着所有其他应用程序的窗口在你的 statusMenu 出现了。它是由 [NSApp activateIgnoringOtherApps:YES] 完成的。当您使用 Spotlight- 或 Airport-statusItem 时,通常不会发生这种情况。用户不会想到这一点。

有没有人让 MAAttachedWindow 表现得像一个真正的 NSMenu?还有没有办法在没有这个问题的情况下使用密钥状态?谢谢你的任何提示。

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 将正确地取消任何可能分配给它的自定义视图以及任何子菜单吗?

0 投票
1 回答
2512 浏览

cocoa - 如何从子菜单中获取 NSMenuItem?

我有对最外层菜单的引用,但我试图获取对嵌套在子菜单中的 NSMenuItem 的引用:

file_menu 显然是一个子菜单(NSMenu),但我不确定如何从它的 itemarray 中获取一个项目。我尝试将其转换为 NSMenu 并将 itemWithTitle 作为选择器执行,但没有成功。

我怎样才能得到第一个 NSMenuItem 呢?

0 投票
1 回答
1241 浏览

objective-c - 使用 NSMenuItems 从 NSArray 填充 NSMenu - 需要替代建议

所以我有以下代码:

这会从 NSArray 动态生成子菜单项,并允许我根据选择的选项(在特定浏览器中)打开 url:

我的问题是,虽然这似乎很好用,但我想为 NSMenu supportLinkItem 设置一个图像,这是我的 .h 文件的样子:

并且出口链接到子菜单项,因为我已将其(父项?-术语?)创建为 NSmenu,它不允许我作为 - (void)setImage:(NSImage *)menuImage 方法访问它它不是一个 NSMenuitem。现在我想也许我在这里做了一些奇怪的事情,从技术上讲,当你将“子菜单项”拖到界面构建器中时,它是一个 NSMenuItem 而不是 NSMenu,我的代码再次完美运行,除了我无法设置菜单的图像,我认为这是不行的,但也许有类似的方法可以从 NSArray 中读取来填充一组子菜单。

0 投票
1 回答
476 浏览

mouseover - NSMenu 的鼠标悬停事件

我使用 NSMenu 和 NSStatusItem 以这种方式在状态栏上显示自定义菜单很长时间:

statusItem = [[[NSStatusBar systemStatusBar] statusItemWithLength:18] retain]; [statusItem setImage:[NSImage imageNamed:@"myIcon"]]; [statusItem setMenu:myMenu]; [statusItem setHighlightMode:NO]; ...

通过开始单击其图像图标,它可以正常工作。但我注意到,位于状态栏上的苹果菜单可以通过鼠标移动简单地触发,如机场菜单、电源菜单、语言菜单和日期/时间菜单。当您鼠标走过时,它们都会自动弹出。他们是怎么得到的?

我已经用“mouseEntered”事件检查了 NSView 的“添加跟踪矩形”,但事情并没有我想的那么困难。

有什么建议吗?

0 投票
1 回答
2395 浏览

objective-c - 使用 NSMenuItems 更新动态创建的 NSMenu

我有一个 NSMenu 和 3 个我想保留的静态 NSMenuItem,然后是动态生成的一堆,每次用户单击菜单图标时都应该删除并重新加载。

我正在尝试创建一个弹出的进程列表,但每次打开弹出窗口时,NSMenuItems 都不清楚。他们只是以某种时髦的方式添加。记录 for 循环表明循环没有完成。任何想法为什么?

0 投票
1 回答
713 浏览

xcode - 为各种 NSWindowController 启用/禁用打印菜单项

我已更改我的打印菜单项以将 -printWindow: 消息发送到第一响应者,并在我的两个窗口控制器(我的主窗口和辅助窗口)上定义了该方法。在我的主窗口上,一切正常。但是,当我关注第二个窗口时,打印菜单项被自动禁用。

我的实现:

如果我了解菜单项的自动验证,它应该爬上第一响应者层次结构,寻找响应所选选择器的对象......这应该是我的 SecondaryWindowController,但菜单项被禁用。知道我做错了什么吗?