问题标签 [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 投票
1 回答
1840 浏览

objective-c - 在基于文档的应用程序中连接菜单项

我已经就这个话题提出了几个问题,但还没有真正得到关于如何做到这一点的真正答案(它实际上收到了“风滚草徽章”哈哈)。

我有一个基于文档的应用程序(意味着 Menu.Xib 与 MyDocument.Xib 是分开的)。

假设我想向 MyDocument(主界面)添加一个“粗体”按钮或检查拼写按钮(Menu.xib 中列出的项目(在格式 > 字体等下)。我不知道该怎么做。

任何帮助将不胜感激(如果它有效,我会立即奖励答案,这已经困扰了我几个星期)。

我尝试将字体管理器添加到 MyDocument.Xib 并以这种方式连接,但粗体按钮仅启用,不会禁用。另外,拼写检查等无法通过字体管理器激活。

必须有更好的方法来做到这一点。

Apple 文档非常模糊。

0 投票
1 回答
1519 浏览

cocoa - Cocoa 绑定——尝试将 NSMenuItem 的状态绑定到我的自定义 BOOL

在我的 mac 应用程序中,[Model m] 是一个具有合成 BOOL 属性和 ivar rollAnimations 的自定义对象。AnimationsItem 是一个 NSMenuItem 对象。我想将我的 animationsItem 的状态绑定到 [Model m] 的 rollAnimations 属性和 ivar。双向绑定是理想的(因此更改任一属性会更改另一个),但如果这很混乱(保留周期等),我将满足于单向绑定,这样更改菜单项会更改 rollAnimations财产。

这是一个代码片段。它不工作。我错过了什么?

0 投票
1 回答
1009 浏览

cocoa - NSMenuItem 自定义视图不响应 keyEquivalent

我已经为 a 设置了一个自定义NSViewNSMenuItem进行自己的绘图和渲染。然而,分配给 'keyEquivalent'NSMenuItem似乎没有响应。我了解绘图和动作处理需要自行处理,但无论我做什么,我似乎都无法捕获 keyEquivalent 请求。我尝试将 NSApplication 的 sendEvent 子类化,但这不起作用,因为我的应用程序是NSStatusBarItem(LSUIElement) 并且来自NSEventTrackingRunLoopMode(当菜单关闭时)的事件没有到达 NSApplication 的 sendEvent。

然后我尝试使用:

这也不起作用,因为即使我已将主菜单的委托设置为控制器,它也不会被调用。

有没有人知道如何在使用自定义视图时捕获 NSMenuItems 上的“keyEquivalent”事件?

谢谢!

0 投票
4 回答
4093 浏览

cocoa - 在我的应用程序的主菜单中设置项目的标题?

我正在尝试更改 Cocoa 应用程序主菜单中某些项目的标题。我尝试在 IB 中设置它们,也尝试通过我的应用程序的 applicationDidFinishLaunchingWithOptions: 方法以编程方式设置它们。无论哪种方式,我的 NSMenuItem 对象的 title 属性都会发生变化。但是当应用程序运行时,我的任何更改都没有反映在屏幕顶部的项目的实际标题中。

谁能解释发生了什么?我该如何改变呢?

编辑:数据结构是 IB 设置的默认结构:

我已将 firstItem 和 subMenu 的标题属性更改为我想要的标题。然而,默认的仍然显示。

0 投票
2 回答
1779 浏览

nsuserdefaults - NSMenuItem 的状态绑定到 NSUserDefaults 中的布尔值不保持同步

我的主菜单(MainMenu.xib)中有一个名为“Word Wrap”的 NSMenuItem。它的值绑定到我的共享用户默认控制器,也在 XIB 中实例化。选择时它还会发送以下操作:

在我的应用程序委托的+initialize方法中,我使用默认值填充标准用户默认值:

我的问题是我的 NSMenuItem 的状态与我的用户默认设置不同步。以下是发生的时间线:

应用启动:

  • 未选中自动换行菜单项
  • wordWrapIsEnabled没有
  • 自动换行已关闭

第一次选择自动换行:

  • 选中自动换行菜单项
  • wordWrapIsEnabled(BZZZT 错误)
  • 自动换行已关闭(BZZZT 错误)

第二次选择自动换行:

  • 未选中自动换行菜单项
  • wordWrapIsEnabled(BZZZT 错误)
  • 自动换行已打开(BZZZT 错误)

无限重复触发器。

我已经检查以确保我的项目中没有其他任何东西可以访问wordWrapIsEnabled. wordWrapIsEnabled在选择器的调用和通过绑定的设置之间是否存在竞争条件?我一直假设首先设置绑定值。

0 投票
3 回答
9103 浏览

objective-c - NSMenuItem 未启用?

我有一个名为 history 的 NSMenuItem,它位于一个名为 menu 的 NSMenu 中。当我的程序启动时,历史没有子菜单,因此它被禁用。然后在某个时候,我需要一个历史子菜单,所以我创建它,让它成为历史子菜单。历史旁边出现一个箭头,告诉我子菜单在那里。但是历史仍然被禁用。我试过 setEnabled 但不起作用。请帮忙。这是我的代码:

这是我创建菜单和历史的时候,你可以在菜单中看到一个 NSMenuItem。

此时,历史记录被禁用(灰显)。然后在程序的某个地方我需要有一个历史子菜单,所以:

我现在在历史旁边看到一个箭头,但它仍然是灰色的。

请帮忙,我在过去的两个小时里一直在努力解决这个问题。谢谢。

0 投票
2 回答
1095 浏览

objective-c - NSMenuItem 自定义视图中的可编辑 NSTextField

我有一个子类 NSView,我想包含一个可编辑的 NSTextField,类似于 Spotlight。

我很难让文本字段选择和突出显示。如果我在文本字段的编辑区域上快速单击,我实际上可以输入文本,但它显示为灰色,就好像我正在将文本添加到一个不是最重要的应用程序的字段中一样。

我试图使用 来获得视图窗口的焦点viewDidMoveToWindow,但显然 NSMenuItem 的窗口是碳窗口,不能很好地处理键。

长话短说,成功完成这项工作的好方法是什么?我知道 Spotlight 是一个无边界窗口,但这不适合我的目的。

任何和所有建议都会非常有帮助。

0 投票
1 回答
1432 浏览

cocoa - Cocoa - NSMenuItem 中的自定义 NSView 不会绘制

我有一个自定义的 NSView,它曾经在 NIB 中创建并分配为 NSMenuItem 的视图,效果很好,但现在我想用代码创建视图(我可以向你保证这是有充分理由的),看起来并不难但是视图实际上并没有绘制。

即使我发送“setNeedsDisplay:”消息,也不再调用以前调用以在需要时绘制视图的“drawRect:”消息。

我用图像初始化视图并设置(视图的大小以匹配图像大小)这似乎有效,因为菜单项的大小正确,但没有图像。

这里会发生什么?

这是初始化视图的代码:

这是绘制没有被调用的视图的代码

这是添加视图的菜单项的代码。

0 投票
1 回答
1776 浏览

objective-c - 如何在 NSMenuItem 的右侧添加图标

我正在尝试在菜单项旁边的菜单右侧添加一些图标,最好是正确的。我知道 NSMenuItem 允许您添加菜单项(例如,请参阅MenuMadness示例)。我真的在寻找 OS X Wifi 菜单中的安全/信号强度指示器之类的东西。

我见过的一种方法是将项目添加到菜单中,并使用 setView 为每个项目提供一个 NSView。然而,这似乎比它应该的要复杂。有没有办法只在菜单中添加一个图标/多个图标?

0 投票
1 回答
5270 浏览

cocoa - 在 Cocoa 中为 NSMenuItem 设置目标/操作的正确方法?

我在执行一些初始 Cocoa 编程时遇到了一些真正的困难。

本质上,我有一个NSStatusBar带有NSMenu附加菜单的项目。菜单有一个NMMenuItem. 在 IB 中,我已将 NSMenuItem 连接到NSObject本身设置为 ApplicationDelegate 的类;然后,我将收到的操作设置为IBActionApplicationDelegate 中的一个方法。我认为一切都正确连接,除非我运行程序并单击菜单项时IBAction不调用该方法。我真的好像搞不定。这是相关的代码。

应用程序委托 h 文件:

应用程序委托 m 文件:

正如我所说,在 IB 中,我已将应用程序NSMenu委托中的当我运行它时没有任何反应!!!statusMenuNSStatusBarNSMenuItemNSMenuNSObject

我也以编程方式尝试过,但仍然无法调用 IBAction 方法。

编辑:我会附上一些屏幕截图来显示 IB 中的设置,但我还不允许。

包含添加到的菜单的主笔尖,NSStatusBar如下所示:

  • NSApplication
  • FRFirstResponder
  • 应用NSApplication
  • 字体管理器NSFontManager
  • 主菜单NSMenu
    • 菜单项(首选项) NSMenuItem
  • Sss 应用程序委托sssAppDelegate

NSMenuItem:

  • 发送操作 - showPreferencePanel--->Sss App Delegate

Sss 应用代表:

  • 奥特莱斯 - statusMenu--->Main Menu
  • 收到的操作 - showPreferencePanel:--->Main Item (Preferences)