2017-03-18 31 views
2

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

我已添加我的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. 以某种方式覆盖应用程序区域,以便我的应用程序的触摸栏始终可见,并可以打破所有其他应用程序对触摸栏的使用。这显然不理想,因为它不能很好地与其他应用程序配合使用。

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

+0

你有没有想过如何做到这一点? – user2397282

+0

@ user2397282没有。据我所知,这是不可能的。 – jameshfisher

+0

请参阅:https://github.com/a2/touch-baer –

回答

1

也许有一些哈克的解决方案,但根据官方文档,你可以这样做: https://developer.apple.com/reference/appkit/nstouchbar

在支持的MacBook Pro机型,触摸条,在键盘上方, 显示的情况下, NSTouch Bar课程来自最前端的应用程序。

+1

也许如果你在后台运行应用程序窗口?当其他应用程序正在使用时,Spotify应用程序可以很好地完成此项任务 –

0

如果你可以将你的应用程序放到Control Strip区域(音量控制和朋友所在的地方),那么用户可以触摸它来调出你的触摸条。看到hazeover的TouchSwitcher来获得这个想法。

相关问题