7

私は NSStatusItem を持っており、属性付きの文字列を使用しています。設定は次のとおりです。

[statusItem setAttributedTitle:as];

as私の属性文字列はどこですか。特定の条件が満たされたときにアイテムの特定の部分を異なる色で強調するために使用します。たとえば、ステータス アイテムに赤いテキストと黒いテキストを含めることができます。

問題は、setAttributedTitleステータス項目を使用してクリックすると、色が反転しないことです。たとえば、 just を使用した場合setTitle、テキストは選択されていないときは黒で、選択されているときは白に変わります。これで、設定した色が保持されます。

選択時に色を反転するように指示する方法はありますか? そうでない場合、どうすればこれを達成できますか? 申し訳ありませんが、私は Objective-C の初心者です。

4

2 に答える 2

4

これを行う唯一の方法は次のとおりです。

  • statusItem使用するためのメニューを設定しないでくださいsetMenu:

  • 代わりに を使用setAction:し、文字列の色を変更し、メニューを表示してから、色を元に戻します

たとえば、次のようなものを使用します。

[statusItem setAction:@selector(statusItemClicked)];

そして、次のstatusItemClickedようにメソッドを実装します。

- (void) statusItemClicked {

  // change color of attributed string to its highlighted state here

  [statusItem popUpStatusItemMenu:statusItemMenu]; // show the menu
                                                   // which used to be set
                                                   // using setMenu:

  // change color of attributed string back its non-highlighted state here
}
于 2011-07-30T02:37:13.467 に答える
2

次の NSMenuDelegate メソッドを実装できます。

- (void) menuWillOpen:(NSMenu *) aMenu {
  // use an attributed string to set the title to your highlighted color
}


- (void) menuDidClose:(NSMenu *) aMenu {
  // use an attributed string to set the title black
}

[statusItem setMenu:[self menu]];
[[self menu] setDelegate:self];
于 2013-02-06T14:48:03.987 に答える