问题标签 [nsstatusitem]

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

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

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

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

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

如何让 MAAttachedWindow 显示为 NSView?

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 回答
1619 浏览

objective-c - 关闭 NSStatusItem 的自定义窗口

单击 NSStatusItem 时,我会弹出一个自定义窗口。该代码基于MAAtachedwindow。一切都很好,但是当用户单击其他状态栏项目或其他应用程序等其他内容时,我无法找到关闭窗口的方法。

这是我创建窗口的代码:

这是我显示窗口的方式:

我希望windowDidResignKey委托方法可以解决问题,但这种配置并不能解决问题。代表正在工作,因为windowDidMove确实在运行。

所以回顾一下,当用户点击其他任何东西时,我如何隐藏我的自定义窗口,标准状态栏菜​​单的工作方式?

编辑 查看Popup示例后,我唯一缺少的是我必须继承 NSPanel 并使其成为关键窗口。

0 投票
4 回答
5790 浏览

objective-c - NSStatusItem 右键菜单

我正在开发一个具有左右单击功能的状态栏应用程序。我已经按照其他帖子的提示开始了这项工作,但我不确定如何在右键单击时显示菜单。

我使用子类 NSView 作为我的 NSStatusItem 的自定义视图,并通过左右单击执行不同的功能:

如何在右键单击时显示菜单,就像标准 NSStatusItem 在左键单击时一样?

0 投票
2 回答
1092 浏览

objective-c - 使用属性字符串突出显示 NSStatusItem

我有一个 NSStatusItem,我为它使用了一个属性字符串,设置如下:

as我的属性字符串在哪里。当满足某些条件时,我用它来突出显示项目的某些部分,方法是给它们涂上不同的颜色。例如,我的状态项可以有一些红色文本和一些黑色文本。

现在的问题是,当我使用setAttributedTitle然后单击状态项时,颜色不会像我想要的那样反转。例如,当我使用 justsetTitle时,未选中时文本为黑色,选中时变为白色。现在它只保留我设置的颜色。

有没有办法告诉它在选择时反转颜色?如果没有,我怎样才能做到这一点?抱歉,我是 Objective-C 的初学者。

0 投票
2 回答
613 浏览

objective-c - 如何检测 NSStatusItem 是否显示在状态栏中?

我的 Mac OS X 应用程序有一个 NSStatusItem。

它工作正常,但是,我刚刚发现,如果顶部菜单/状态栏中的项目太多(例如,如果应用程序的菜单很长,图标太多等),我的状态项目会被隐藏由系统。

我怎样才能在我的应用程序中检测到这一点,以便我可以做些什么呢?

谢谢

0 投票
1 回答
465 浏览

objective-c - 获取基于非视图的 NSStatusItem 的屏幕位置

我的应用程序使用了 NSStatusItem。我需要获取状态项目的屏幕坐标,但由于我不需要为项目设置自定义视图所提供的功能,因此我使用基于图标的标准视图。

有没有办法获得状态项的位置而不必求助于设置自定义视图?

0 投票
1 回答
540 浏览

macos - 获取 NSStatusItem 的长度

我的应用程序中有一个 NSStatusItem 可以配置为显示一些文本。这个文本可以改变,问题是,每次改变长度时,整个状态项都会改变它的长度,从而导致“宽度闪烁”。

我考虑将状态项的长度设置为NSVariableStatusItemLength,插入尽可能长的文本,取回长度,然后将其设置为状态项的恒定长度。但是,看起来 的length函数NSStatusItem对此完全没有用,因为它只是返回NSVariableStatusItemLength而不是实际长度。

那么,有没有另一种方法来预先计算 NSStatusItem 需要多长时间来保存一些文本和可选的图标?例如,是否保证所有 Mac 系统上的图标和字体/大小都相同,所以我可以简单地“测量”系统上的最佳长度?

0 投票
1 回答
842 浏览

macos - 检测单击 OS X 菜单栏?

我很好奇是否有一个技巧可以检测整个菜单栏上的点击。我知道我可以检测到对 NSStatusItem 或 NSMenu 的点击,但我正在寻找与菜单栏空白区域相关的事件。

翻阅文档,似乎不可能。但是,我想知道是否有人对此功能有解决方法?

0 投票
1 回答
929 浏览

objective-c - 通知 NSStatusItem 何时隐藏

我有一个使用NSStatusItem. 在小屏幕上,状态栏没有太多空间。当用户切换到具有大量菜单项的应用程序时,我的状态项会被隐藏。有没有办法得到这方面的通知?

到目前为止我尝试了什么:

  • 我检查是否有任何NSNotification被解雇:否
  • 我检查了statusView是否从视图层次结构中删除:否
  • 我查了isHiddenOrHasHiddenAncestor:没有

这是我用来创建状态项的代码。