質問

Mac OS Xのメニューバー(またはNSStatusBarの方が良い)をご存知でしょう。
移動できるアイテムとそうでないアイテムがあります。

アプリのNSStatusItemをドラッグできるようにしたい。

これを実装する方法はありますか?

役に立ちましたか?

解決

NSStatusItemsはAppleの内部「メニューエクストラ」の近くに表示されますが、それらは区別され、異なる動作をします。 Appleがメニューバーの右側の領域に表示できる項目を統合すると良いと思いますが、現時点では、セクションは別個の「apple internal」に分割されています。 (右側)、および「アプリ提供(NSStatusItem)」左側。

コンピュータをスクリーンキャプチャモード(cmd-shift-4)に切り替え、スペースバーを押して「ウィンドウ全体をキャプチャ」に切り替えることで、区別を視覚化できます。 Appleのメニューアイコンにカーソルを合わせると、それらがすべて1つのウィンドウに表示されます。これは、簡単に管理およびドラッグできる機能を説明しています。他のアイテムの上にマウスを置くと、各NSStatusItemが実際にそれ自身の単一のウィンドウ(たまたまインストールしたアプリケーションによって所有されている)に住んでいることが明らかになります。

NSStatusItemをドラッグすることはできませんが、NSStatusItemを使用することをお勧めします。これは、たとえ煩わしいとしても、ほとんどのユーザーが理解するAppleの欠点です。長期にわたってより安定したアプリケーションを提供することのプラスのトレードオフを強調することは、通常、ドラッグ可能性を推進している顧客(またはマネージャー?)の意見を和らげます。

他のヒント

NSMenuExtra を使用する必要があります。< code> NSStatusItem 、メニュー項目を、独自のアプリではなく、 SystemUIServer プロセス内で実行されるバンドルにします。これを機能させるには、MenuCrackerが提供するようなコードも必要です。

NSMenuExtra は文書化もサポートもされていないため、「ハック」と見なされます。

最初に2つのAPIがあると思う:メニューの追加クラッシュ(またはメモリリーク)は、SystemUIServerプロセス全体のクラッシュまたはメモリリークを意味します&#8212;他のサードパーティのモジュールとシステム提供のモジュールが含まれます。一方、ステータス項目では、このような問題は自分のコードにのみ影響します。

macOS Sierra 10.12以降 http://www.macworld.co.uk/how-to/mac-software/7-sierra-menu-bar-tips-how -use-mac-menu-bar-in-macos-sierra-3649163 /

  

サードパーティアプリは、メニューの追加としてインストールされる場合や、メニューバーにコントロールが存在する場合があります。 macOS Sierraの時点で、これらのメニューエキストラはネイティブのものと同様に再配置できます。 (これはOS X El Capitanには当てはまりませんでした。)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top