问题标签 [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.
objective-c - 如何在菜单中创建 NSWindow
我正在 Xcode 4 中创建一个 menulet 应用程序,我试图弄清楚如何显示一个在单击 menulet 图标时将出现的窗口。我希望窗口显示为正常的 NSWindow。
我查看了 MAAttatchedWindow 源代码,这似乎对我没有帮助。有人可以解释一下如何在单击时使菜单下拉窗口吗?
我相信我应该使用 setView: 函数为 NSStatusItem 创建一个自定义视图,但不能完全弄清楚应该如何布置代码。到目前为止我有这个:
如何让 MAAttachedWindow 显示为 NSView?
nswindow - 使 MAAttachedWindow 表现得像 NSMenu
我已经阅读了本网站上的一篇文章,内容是当用户在 MAAttachedWindow 外部单击时如何隐藏它。在这篇文章中,我将 MAAttachedWindow 与 statusItem 一起使用。 单击外部时隐藏 MAAttachedWindow。它说我应该在 Window 退出其键状态时隐藏它。
但我想知道是否有任何其他方法代替窗口的关键状态。使用 key-status 会增加另一个问题:为了在窗口退出 key-state 时获得通知,所有其他应用程序必须之前已被忽略(这意味着所有其他应用程序的窗口在你的 statusMenu 出现了。它是由 [NSApp activateIgnoringOtherApps:YES] 完成的。当您使用 Spotlight- 或 Airport-statusItem 时,通常不会发生这种情况。用户不会想到这一点。
有没有人让 MAAttachedWindow 表现得像一个真正的 NSMenu?还有没有办法在没有这个问题的情况下使用密钥状态?谢谢你的任何提示。
objective-c - 关闭 NSStatusItem 的自定义窗口
单击 NSStatusItem 时,我会弹出一个自定义窗口。该代码基于MAAtachedwindow。一切都很好,但是当用户单击其他状态栏项目或其他应用程序等其他内容时,我无法找到关闭窗口的方法。
这是我创建窗口的代码:
这是我显示窗口的方式:
我希望windowDidResignKey
委托方法可以解决问题,但这种配置并不能解决问题。代表正在工作,因为windowDidMove
确实在运行。
所以回顾一下,当用户点击其他任何东西时,我如何隐藏我的自定义窗口,标准状态栏菜单的工作方式?
编辑 查看Popup示例后,我唯一缺少的是我必须继承 NSPanel 并使其成为关键窗口。
objective-c - NSStatusItem 右键菜单
我正在开发一个具有左右单击功能的状态栏应用程序。我已经按照其他帖子的提示开始了这项工作,但我不确定如何在右键单击时显示菜单。
我使用子类 NSView 作为我的 NSStatusItem 的自定义视图,并通过左右单击执行不同的功能:
如何在右键单击时显示菜单,就像标准 NSStatusItem 在左键单击时一样?
objective-c - 使用属性字符串突出显示 NSStatusItem
我有一个 NSStatusItem,我为它使用了一个属性字符串,设置如下:
as
我的属性字符串在哪里。当满足某些条件时,我用它来突出显示项目的某些部分,方法是给它们涂上不同的颜色。例如,我的状态项可以有一些红色文本和一些黑色文本。
现在的问题是,当我使用setAttributedTitle
然后单击状态项时,颜色不会像我想要的那样反转。例如,当我使用 justsetTitle
时,未选中时文本为黑色,选中时变为白色。现在它只保留我设置的颜色。
有没有办法告诉它在选择时反转颜色?如果没有,我怎样才能做到这一点?抱歉,我是 Objective-C 的初学者。
objective-c - 如何检测 NSStatusItem 是否显示在状态栏中?
我的 Mac OS X 应用程序有一个 NSStatusItem。
它工作正常,但是,我刚刚发现,如果顶部菜单/状态栏中的项目太多(例如,如果应用程序的菜单很长,图标太多等),我的状态项目会被隐藏由系统。
我怎样才能在我的应用程序中检测到这一点,以便我可以做些什么呢?
谢谢
objective-c - 获取基于非视图的 NSStatusItem 的屏幕位置
我的应用程序使用了 NSStatusItem。我需要获取状态项目的屏幕坐标,但由于我不需要为项目设置自定义视图所提供的功能,因此我使用基于图标的标准视图。
有没有办法获得状态项的位置而不必求助于设置自定义视图?
macos - 获取 NSStatusItem 的长度
我的应用程序中有一个 NSStatusItem 可以配置为显示一些文本。这个文本可以改变,问题是,每次改变长度时,整个状态项都会改变它的长度,从而导致“宽度闪烁”。
我考虑将状态项的长度设置为NSVariableStatusItemLength
,插入尽可能长的文本,取回长度,然后将其设置为状态项的恒定长度。但是,看起来 的length
函数NSStatusItem
对此完全没有用,因为它只是返回NSVariableStatusItemLength
而不是实际长度。
那么,有没有另一种方法来预先计算 NSStatusItem 需要多长时间来保存一些文本和可选的图标?例如,是否保证所有 Mac 系统上的图标和字体/大小都相同,所以我可以简单地“测量”系统上的最佳长度?
macos - 检测单击 OS X 菜单栏?
我很好奇是否有一个技巧可以检测整个菜单栏上的点击。我知道我可以检测到对 NSStatusItem 或 NSMenu 的点击,但我正在寻找与菜单栏空白区域相关的事件。
翻阅文档,似乎不可能。但是,我想知道是否有人对此功能有解决方法?
objective-c - 通知 NSStatusItem 何时隐藏
我有一个使用NSStatusItem
. 在小屏幕上,状态栏没有太多空间。当用户切换到具有大量菜单项的应用程序时,我的状态项会被隐藏。有没有办法得到这方面的通知?
到目前为止我尝试了什么:
- 我检查是否有任何
NSNotification
被解雇:否 - 我检查了
statusView
是否从视图层次结构中删除:否 - 我查了
isHiddenOrHasHiddenAncestor
:没有
这是我用来创建状态项的代码。