如何使应用程序的触摸栏在 macOS 上始终可见?

2024-04-17

我正在做macOS 菜单栏应用程序 https://vidr.io显示全屏覆盖。用户可以通过菜单栏中的滑块控制该叠加层的不透明度。我希望将这些控件移至触摸栏,因为该应用程序用于屏幕录制,并且会记录主屏幕上的干扰。我的应用程序中的滑块应该像默认情况下触摸栏上的亮度和音量滑块一样工作。

我已经添加了我的NSTouchBar通过子类化NSApplication并实施makeTouchBar。该栏在应用程序首次启动时出现。但是,当聚焦任何其他应用程序时,触摸栏会消失,并且似乎无法再次显示我的应用程序的触摸栏。我认为问题在于我的应用程序是一个没有窗口的纯菜单栏应用程序。

以下是我可以使应用程序的触摸栏可见的方法,从最优选到最不优选:

  1. 将我的应用程序的图标添加到控制条中,位于亮度和音量图标旁边。这将让用户点击我的图标来调整不透明度,即使其他应用程序处于焦点状态也是如此。然而,奇怪的是,我被告知没有公共 API 来操作控制条 https://stackoverflow.com/questions/40307443/is-there-programable-access-to-the-control-strip-of-the-macos-touch-bar.

  2. 以某种方式为我的用户提供一种将我的应用程序手动添加到控制条的方法。控制条可以通过定制System Preferences > Keyboard > Customize Control Strip ...,它显示了可以拖放到控制条中的各种内容。我想将我的申请注册为包含在此处的项目。但是,我找不到任何方法来做到这一点。

  3. 将我的应用程序注册为音乐应用程序。我机器上的 Spotify 以某种方式使用控制条中的“音乐”图标(与 iTunes 使用的图标相同)。我不知道 Spotify 是如何做到这一点的 - 还有其他人知道吗?显然,这将是一种黑客攻击,因为我的应用程序不播放音频,但总比没有好。

  4. 以某种方式覆盖应用程序区域,以便我的应用程序的触摸栏始终可见,从而破坏所有其他应用程序对触摸栏的使用。这显然不理想,因为它不能与其他应用程序很好地配合。

这些解决方案是否可行?还有其他可能的解决方案吗?如何使我的应用程序的触摸栏始终可通过触摸栏访问?


也许有一些 hacky 解决方案,但根据官方文档你不能这样做:https://developer.apple.com/reference/appkit/nstouchbar https://developer.apple.com/reference/appkit/nstouchbar

在受支持的 MacBook Pro 型号上,触摸栏位于键盘上方, 显示最前面应用程序中 NSTouchBar 类的实例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使应用程序的触摸栏在 macOS 上始终可见? 的相关文章

随机推荐