4

我正在制作一个显示全屏覆盖的 macOS 菜单栏应用程序。用户可以通过菜单栏中的滑块控制此叠加层的不透明度。我希望将这些控件移动到触摸栏,因为该应用程序用于屏幕录制,并且会记录主屏幕上的分心。我的应用程序中的滑块应该就像默认情况下触摸栏上的亮度和音量滑块一样。

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

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

  1. 将我的应用程序的图标添加到控制条,在亮度和音量图标旁边。这将让用户点击我的图标来调整不透明度,即使在其他应用程序被聚焦时也是如此。然而,奇怪的是,我被告知没有公共 API 来操作控制条

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

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

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

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

4

2 回答 2

2

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

在支持的 MacBook Pro 机型上,键盘上方的 Touch Bar 显示来自最前面的应用程序的 NSTouch​Bar 类的实例。

于 2017-03-22T13:48:00.303 回答
0

如果您可以将您的应用程序放入控制条区域(音量控制和朋友所在的位置),那么用户可以在那里触摸它以调出您的触摸栏。请参阅 hazeover 的 TouchSwitcher 以获得这个想法。

于 2017-05-25T09:54:15.357 回答