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

cocoa - 如何在 NSMenuItem 中绘制我自己的等效键?

我需要这个所有者在我自己的代码中绘制的选项卡完成键等效项。就像 TextMate 在本例中所做的那样。

我听说菜单绘图是基于碳的,但我不希望它是一个如此巨大的黑客。

但是无论我尝试过什么,无论我在哪里看,我都找不到任何线索。

编辑:我什至愿意接受基于碳的答案,只要在版本 >= 10.4 上运行的任何东西

0 投票
7 回答
5436 浏览

cocoa - NSMenuItem 中的自定义 NSView 未接收到鼠标事件

我有一个 NSMenu 使用 popUpStatusItemMenu 从 NSStatusItem 中弹出。这些 NSMenuItem 显示了一堆不同的链接,每个链接都通过 setAction: 连接到目标的 openLink: 方法。这种安排已经运行了很长时间。用户从菜单中选择一个链接,然后 openLink: 方法处理它。

不幸的是,我最近决定尝试使用 NSMenuItem 的 setView: 方法来提供更好/更流畅的界面。基本上,我只是停止设置标题,创建 NSMenuItem,然后使用 setView: 来显示自定义视图。这非常有效,菜单项看起来很棒,并且显示了我的自定义视图。

但是,当用户选择一个菜单项并释放鼠标时,该操作不再起作用(即,未调用 openLink:)。如果我只是简单地注释掉 setView: 调用,那么操作会再次起作用(当然,菜单项是空白的,但操作会正确执行)。那么,我的第一个问题是为什么设置视图会破坏 NSMenuItem 的操作。

没问题,我想,我会通过在我的自定义视图中检测 mouseUp 事件并从那里调用我的操作方法来修复它。我将此方法添加到我的自定义视图中:

没有骰子!这个方法永远不会被调用。

不过,我可以设置跟踪矩形并接收 mouseEntered: 事件。我在 mouseEntered 例程中进行了一些测试,如下所示:

并得到以下回复:

这是问题吗?“不是键窗口”?大概这不好,因为 Apple 的文档说“如果用户单击不在键窗口中的视图,默认情况下,窗口会向前移动并设为键,但不会调度鼠标事件。” 但是必须有一种方法可以检测到这些事件。如何?

添加:

没有效果,尽管 canBecomeKeyWindow 是 YES。

0 投票
1 回答
339 浏览

cocoa - 绑定枚举属性的最简洁方法是什么?

我有一个菜单,其中包含枚举中每个值的项目。

菜单:

枚举:

物业:

连接这个最干净的方法是什么?我有两个想法,但都让我觉得不满意。

第一个想法:为每个值(等)创建属性sortMethodIsDueDate这些setSortMethodIsDueDate:属性将调用setTaskSortMethod:和调用valueDidChange:@"sortMethodIsDueDate"等。然后菜单项将绑定到这些属性。这似乎需要做很多工作。

第二个想法:连接每个菜单项,-(IBAction)updateSortMethod:(id)sender然后可以迭代菜单项并根据sender. 这种方法很好,直到taskSortMethod被不同的代码部分更改,此时需要添加代码以保持菜单与taskSortMethod.

我倾向于第一种方法,因为它在 V 和 C 之间有更好的分离。

有更好的想法吗?

0 投票
1 回答
2648 浏览

nsview - 具有自定义视图的自定义 NSStatusItem - 使用 NSWindow、NSView、自定义 NSMenuItem?

我正在尝试创建一个 LSUIElement 应用程序,其行为类似于 Spotlight、CoverSutra 和该类型的其他应用程序。我设法创建了一个自定义 NSStatusItem,它会弹出一个 NSWindow,但问题是当前具有焦点的应用程序将焦点放在我的自定义 NSWindow 上。

我以 Matt Gemmell 的示例为基础(http://mattgemmell.com/2008/03/04/using-maattachedwindow-with-an-nsstatusitem

例如,如果您在 Safari 中并单击 Spotlight 图标,则当前 Safari 窗口不会灰显并保持焦点。当您在 Spotlight 中按 ESC 时,焦点将返回到 Safari 窗口。

我没有设法用我的自定义 NSWindow 做到这一点。我必须单击一个窗口才能将焦点重新设置回它。

所以我想知道要实现这一目标的路线。解决方案是带有自定义 NSMenuItem 的 NSWindow、NSPanel、NSMenu 吗?

0 投票
1 回答
1551 浏览

objective-c - NSMenuItem 中的 NSTextField

嗨,我正在编写用于在 twitter.com 上发布 twitts 的小应用程序我设法在时钟和电池监视器旁边创建状态栏图标,但现在我被堆叠了......

我想添加菜单项文本区域最大长度为 140 个字符,(4-5 行文本输入字段)类似于聚光灯但多行

(顺便说一句,我有工人阶级,可以在 twitter 上发布和获取 twitts,并将其作为 NSString 返回,它可以工作)

是否有可能,或者我必须实现自己出现的“某些东西”,或者我可以使用菜单项

我添加这样的菜单项:

下一个问题将是自动生成带有跟随 twitts 的菜单项,但我认为这不会是一个问题(它类似于 wifi 状态栏图标,它会自动填充列表)

0 投票
1 回答
151 浏览

cocoa - 在菜单项中输入?

我想知道是否可以将 NSTextField (例如)作为菜单中的菜单项。您的帮助将不胜感激!

甜蜜的一天,——阿尔贝

0 投票
2 回答
6315 浏览

objective-c - 使用动作选择器预设将项目添加到 NSMenu

我是 Obj-C/Cocoa 编程的新手,我在尝试将菜单项动态添加到 NSMenu 实例并在插入时已设置项操作选择器时遇到问题。

我可以,很好地添加动态菜单项,但是当通过菜单单击该项目时,操作选择器不会触发。

下面的第一行是我用来添加菜单项的代码行。您可以将我正在设置操作:(SEL)aSelector 设置为“openEchowavesURL”函数。

这个函数在同一个控制器类文件中,我在下面包含了函数定义。

我只是调用了错误的选择器语法或其他东西吗?或者单击时让菜单项调用选择器的技巧是什么?



0 投票
1 回答
881 浏览

cocoa - NSMenuItem 文本字段高亮问题

我正在创建一个需要在文本字段中输入 URL 的状态栏应用程序。文本字段是 NSMenuItem 的子视图。我面临的问题是文本字段的值不能更改,只能“间接突出显示”(它不是正常的蓝色突出显示,而是灰色突出显示,只有在双击文本字段的值时才会出现)。

有人知道这是为什么吗?我没有禁用文本字段,但它似乎应用了只读属性或其他东西......

0 投票
1 回答
371 浏览

objective-c - 无法从文档控制器填充 NSMenu

我有一个 MainMenu.xib 和一个 MyDocument.xib。我需要从我的文档控制器动态填充一些 NSMenuItem,但我不知道如何从 MainMenu.xib 获取它。

我尝试将 NSObject 添加到 MainMenu.xib 并使其成为我的文档控制器的实例,但我无法从控制器上的 NSArrayController 填充 NSMenuItem。

我应该只在代码中执行此操作,还是有另一种解决方法?

0 投票
2 回答
1598 浏览

cocoa - 从 NSMenuItem 获取 NSPopUpButton

我的应用程序使用-validateMenuItem:验证菜单项的方法。但是我需要根据弹出窗口中的内容来验证不同的菜单项。

我希望找到一种方法来获取弹出窗口的标签,但是在查看了文档后,我似乎找不到方法……有什么想法吗?

编辑: 我认为这需要更多上下文...我的模型对象是 JDBCSyncer(将一个数据库与另一个同步),我的窗口是一个设置,我需要根据它们的标题是否在数组中来验证我的菜单项表示表中各个字段的字符串。这个想法是您从弹出窗口中选择字段。