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

cocoa - 没有编辑菜单的对话框中的 Cocoa 键盘快捷键

我有一个LSUIElement显示菜单栏状态项的应用程序。应用程序可以显示一个包含文本字段的对话窗口。

如果用户右键单击/控制单击文本字段,则会出现一个菜单,允许剪切、复制、粘贴等。但是,标准的 Command-X、Command-C 和 Command-V 键盘快捷键在场地。我认为这是因为我的应用程序没有提供定义了这些快捷方式的编辑菜单。

我已尝试按照Ship Some Code博客中的建议将编辑菜单项添加到我的应用程序菜单中,但这不起作用。可以使用编辑菜单中的菜单项,但键盘快捷键仍然不起作用。

我可以想象一些破解键盘处理的方法,但是有没有“推荐”的方法来完成这项工作?

(有关应用程序的详细信息,请参阅菜单栏倒计时。)

相关问题:复制/粘贴在模态窗口中不起作用

0 投票
1 回答
1472 浏览

objective-c - 如何有效地分配 NSStatusItem 图像和替代图像?

假设我有这样的代码......

我还想为状态项设置动画,因此我创建了 6 个“更新”状态项图标的变体,并将其循环到 NSTimer 上,目标方法与上述类似。问题是:

  1. 如何有效地分配图像?例如,如果我使用保留/预加载的 NSImage 可以吗?
  2. 有没有办法以更有效的方式为状态项设置动画?我不知道任何核心动画的东西,所以请多多包涵。
0 投票
7 回答
5842 浏览

objective-c - 如何获取 NSStatusItem 的屏幕位置

NSStatusItem我对mac osx 中的 for cocoa 有疑问。如果您查看名为片段的 Mac 应用程序(请参阅http://snippetsapp.com/上的电影)。您会看到,一旦您单击状态栏图标,一个完美对齐的视图/面板甚至可能会出现在图标下方。

我的问题是......如何NSWindow像这个应用程序一样计算放置你的位置?

我尝试了以下方法:

  1. 子类NSMenu
  2. 为菜单的第一项设置视图弹出窗口(工作但足够了)
  3. 使用 addSubview 而不是 icon 可以NSStatusItem工作,但不能高于 20px
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 投票
2 回答
1737 浏览

cocoa - NSStatusItem(可可)在屏幕上的位置

我正在尝试获取 NSStatusItem 在屏幕上的位置,以便我可以通过如下代码单击该区域。我这样做是为了让我的用户可以按热键来查看菜单。

有谁知道获取位置的方法?,我一直在尝试想法并搜索几天,并找到了几个想法,但似乎没有一个适用于豹/雪豹

NSStatusItem 使用的是 NSMenu 而不是自定义视图。

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 投票
2 回答
2135 浏览

cocoa - LSUIElement 的行为与 activateIgnoringOtherApps 不一致

具体来说,它在文本字段焦点方面的行为不一致。

我有一个 LSUIElement 弹出状态菜单。在该菜单中有一个包含文本字段的视图。文本字段需要是可选择的——不一定是默认选择的,但无论如何。

单击状态项时,会触发

它工作,大约一半的时间。* 状态菜单的另一半似乎认为自己“在后台”,即使单击它也不会让我将注意力集中在文本字段上。(我知道状态项点击触发器正在触发 b/c 上面有一个 NSLog。)

这是 Apple 处理这些状态项的方式中的错误,还是我错误处理了 activateIgnoringOtherApps?

*事实上,它似乎只是在另一个应用程序激活后第一次失败。之后它工作正常。

完整的片段:

0 投票
1 回答
3983 浏览

objective-c - Objective-C: NSStatusBar 左右点击

如何检测状态栏图标上的左键或右键单击,然后根据单击的鼠标按钮(触控板)进行一些操作?

我用:

生成状态栏图标

0 投票
3 回答
1334 浏览

cocoa - 如何在 CALayer 上绘制具有原生外观的状态项背景

实际上我想在我的自定义 statusItemViewNSStatusItem上绘制一个选定的背景。CALayer但由于

- (void)drawStatusBarBackgroundInRect:(NSRect)rect withHighlight:(BOOL)highlight

在图层上不起作用(?)我尝试使用 backgroundColor 属性绘制颜色。但是将 selectedMenuItemColor 转换为 RGB 并没有多大帮助。没有渐变,它看起来很简单。:-/

我用这段代码转换[NSColor selectedMenuItemColor]成一个:CGColorRef

知道如何在 CALayer 上绘制具有原生外观的状态项背景吗?

0 投票
1 回答
572 浏览

c# - Monobjc :: 添加 NSStatusItem

我正在尝试从 Mono 的 Monobjc 桥中添加一个 NSStatusItem 。该函数被调用,并且不会引发异常,但我的图标没有出现:(。

这是我的代码:

提前致谢,

伊万