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

objective-c - NSMenuItem 自定义视图问题

我试图在 NSMenuItem 中放置一个自定义视图,这是我得到的结果:

在此处输入图像描述

如何去除顶部和右侧的白色填充?谢谢。

0 投票
5 回答
2806 浏览

objective-c - 有没有办法控制打开菜单时最初突出显示的 NSMenuItem 项?

我正在研究符号弹出按钮的细节,类似于 Xcode 3 在其编辑器窗口顶部的内容。

NSMenu我的控制器对象是显示时显示的委托NSPopUpButton。我实现了这两种方法numberOfItemsInMenu:menu:updateItem:atIndex:shouldCancel:在菜单即将显示之前填充菜单。

NSMenuItem但是,每次用户在编辑器中更改选择NSTextView或更改文本时,所选的标题和图像都必须更改;就像 Xcode 一样。

我遇到的问题是当用户单击NSPopUpButton以显示 时NSMenu,选择NSMenuItem的和应该选择的项目不匹配,因为菜单还没有正确数量的项目。

我想知道是否有一种方法可以控制NSMenuItem当用户单击打开菜单时最初突出显示和跟踪的内容。就目前而言,它始终突出显示和跟踪的第一个项目,或者,如果用户之前选择了一个项目,则该项目被突出显示并跟踪。

我尽我所能解释,但这里有一张图片说明了我的问题:

http://imgur.com/izGvh

我希望用户打开菜单时突出显示的项目与所选项目相同。有任何想法吗?

0 投票
4 回答
2514 浏览

objective-c - 如何使用自定义视图隐藏菜单项?

-setView:我在 NSMenuItem(使用方法)中使用了一个非常简单的自定义视图(仅包含一个只读的 NSTextField 和一个 NSSegmentedControl )。这部分按预期工作。

这是问题所在:在-menuNeedsUpdate:NSMenu 委托方法中,我有条件地隐藏了菜单项。当我调用[item setHidden:YES]时,具有自定义视图的菜单项不会隐藏,但其他“香草”菜单项会隐藏。

我的自定义视图构建在它自己的 XIB 中,我通过自定义 NSViewController 访问它。

更新

即使我在 Interface Builder 中选中 Hidden 复选框,菜单项仍然可见,并删除它在代码中隐藏的行。

更新 2

我还尝试在设置菜单项hidden之前和之后设置自定义视图。hidden结果好像菜单项没有隐藏,但视图是;视图的控件是不可见的,但它们应该在的地方仍然存在差距。

更新 3

我修改了 Apple 的MenuItemView示例代码,以在添加后隐藏其中一个菜单项(在第 87 行插入[menuItem setHidden:YES];),它与我的代码中的效果相同(也就是说,没有)。

我开始认为隐藏此菜单项的唯一方法是将其视图设置nil为何时需要隐藏它并在需要显示它时将其放回原处,但这似乎没有必要。

更新 4

使用下面迈克的回答,这是我正在使用的代码:

0 投票
2 回答
1797 浏览

objective-c - NSTextfield + NSMenu 和第一响应者

我正在尝试实现我自己的自动补全系统(结果是从 sqlite 数据库中提取的)

我已经设置了一个 NSTextField 和适当的委托。每次 NSTextField 中的文本发生变化时,它都会调用- (void)controlTextDidChange:(NSNotification *)aNotification方法

它工作正常,在这种方法中,我以编程方式构建了一个菜单,最后我用该代码调用/显示它:

address我的在哪里NSTextFieldmenu是我的NSMenu。问题是菜单占据了焦点,因此您只能在文本字段中输入 1 个字母,然后您不能再输入文本,因为菜单现在是第一响应者。

我的问题是如何显示菜单并将文本字段保留为第一响应者,以便您可以在该字段中的每次文本更改时重新加载菜单时输入它。

例如,它实际上应该像在 Safari 或 chrome 地址栏中一样。

0 投票
4 回答
2073 浏览

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

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

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

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

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

0 投票
1 回答
380 浏览

cocoa - 为什么 NSMenu 的子类没有响应?

我在单独的 xib 文件中创建了一个菜单资源,使其成为 NSMenu 的子类,如下所示,文件的所有者为 StatusMenu

其中show方法的实现方式如下

然后我在应用程序委托中创建并启动了 StatusMenu 实例,如下所示

现在,我可以看到状态栏上的图标。但是当我点击图标时,没有响应发生。有什么问题?

0 投票
1 回答
938 浏览

cocoa - Cocoa:自动关闭状态菜单

我在状态栏上有一个状态菜单,我有一些在幕后运行的任务。当其中一项任务完成时,假设在显示菜单(下拉)时,我想让菜单不处于下拉模式(假装在菜单图标上单击鼠标左键)。有没有办法做到这一点?

0 投票
1 回答
606 浏览

cocoa - Cocoa 应用程序菜单 - 如何重新创建?

在 MainMenu.xib 中,我删除了自动为您提供应用程序菜单的默认主菜单(以及 File/Edit/Format/View/Window/Help 菜单)。

我需要采取哪些步骤才能将其重新添加到我的应用程序中?

0 投票
1 回答
1619 浏览

objective-c - Remove the "Open Recent" menu item in Cocoa apps

I found a bunch of people asking this (remove or disable the recent-items submenu) and no answers.

After a bit of investigation ... the problem is that Apple has secretly hard-coded that particular menu to always appear - even if you delete it, NSWindowController will silently re-create it.

0 投票
1 回答
588 浏览

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

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