4

私は現在、次のようNSStatusItemに初期化されたステータスバー用のものを持っていますawakeFromNib:

    statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength];
    [statusItem setMenu:statusMenu];
    [statusItem setImage:statusImage];
    [statusItem setAlternateImage:statusHighlightedImage];
    [statusItem setHighlightMode:YES];
    [statusItem setTarget:self];

NSMenuアイコンをクリックすると開く があります。オプションの 1 つは、クリックするとNSPopover、ステータス バー アイコンから開くことになっています。これを行うには、Interface Builder を介してメニュー項目に接続する次のコードがあります。

- (IBAction)prefs:(id)sender {    
    NSRectEdge prefEdge = NSMaxYEdge;

    [[self pop] showRelativeToRect:[[statusItem view] bounds]
                          ofView:[statusItem view]
                   preferredEdge:prefEdge];
}

ただし、ポップオーバーを開くメニュー項目をクリックしても何も起こりません。これが当てはまる特定の理由はありますか?私が知る限り、できるはずです。

前もって感謝します。私はできる限り Stack Overflow を調べましたが、真に重複した質問がある場合は、リンクしてください。

参考までに:statusItem変数はNSStatusItem.

4

2 に答える 2

2

非を返すには、 [statusItem setView:]forを使用して自分でビューを設定する必要があります。[statusItem view]nil

プライベート API を使用してもかまわない場合は[statusItem _button]、代わりに を呼び出してみることもできますが、App Store に提出する予定がある場合は許可されません。

于 2012-12-27T02:29:49.400 に答える