20

メニューバー アイテムを使用するアプリケーションや、メニューバー インターフェイスのみを使用するアプリケーションを数多く見てきました。

インターネット上には、それを達成する方法を示すチュートリアルやものがいくつかあります。しかし問題は、それらにはクリック可能なインデックス行しかないということです。

メニューバーのアイコン/アイテムをクリックすると、NSPopover が表示されるようにしたいと思います。これの作り方わかる人いますか?

4

1 に答える 1

58

標準のステータスバー項目でできるかどうかはわかりません。menulet のカスタム ビューを使用すると、比較的簡単です。

カスタム ビューでステータス バー アイテムを作成します。

item = [[NSStatusBar systemStatusBar] statusItemWithLength:thickness];
view = [[CustomView alloc] initWithFrame:(NSRect){.size={thickness, thickness}}];
[item setView:view];        

カスタム ビューでマウス クリックを検出する必要があります。

- (void)mouseDown:(NSEvent *)event {
   ...
}

最後に、マウスのクリックを検出した後のある時点で、ポップオーバーを表示/非表示にします。

if (/* menulet is active */) {
    [popover showRelativeToRect:/* menulet view frame */
                         ofView:/* menulet view */
                  preferredEdge:NSMinYEdge];
} else {
    [popover performClose:nil];
}

ポップオーバー内でテキスト フィールドを機能させるには、NSWindow のスウィズリングが少し必要です。

これらのアイデアといくつかの接着剤を使用して、最小限のXcode プロジェクトを準備しました: PopoverMenulet

于 2011-10-26T16:49:44.183 に答える