如何在macOS上始终显示我的应用程序的触控条?

时间:2017-03-18 19:05:35

标签: macos menubar nstouchbar

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

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

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

  1. 将应用程序的图标添加到控制条上,亮度和音量图标旁边。即使其他应用程序被聚焦,这也会让用户点击我的图标来调整不透明度。然而,奇怪的是,I am told that there is no public API to manipulate the control strip

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

  

在支持的MacBook Pro型号上,键盘上方的触控条,   从最前面的应用程序显示NSTouch Bar类的实例。

答案 1 :(得分:0)

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