2017-03-18 69 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來獲得這個想法。

相關問題