2011-07-15 7 views
1

アプリケーションウィンドウにアウトラインビュー(XCodeなど)が含まれているときに、そのウィンドウにフォーカスが当てられたときに色が変わっていることに気付きました。たとえば、XCodeを使用すると、ウィンドウが現在の場合、アウトラインビューには青い背景が表示され、フォーカスが失われると灰色になります。ウィンドウにフォーカスがあるときにNSViewの背景色を変更します

誰でもこの複製を手助けできますか?私はdrawRect:と何かを仮定していますが、ウィンドウの読み込み時に色を変更することしかできません。

おそらくその機能を内蔵していて、私は何かが欠けているのでしょうか?

答えて

1

ウィンドウのデリゲートは、ウィンドウがメインウィンドウまたはキーウィンドウのステータスを取得または終了するたびにメッセージを取得します。適切なメソッド(-windowDidBecomeMain:-windowDidResignMain:など)をウィンドウ代理人に実装して、必要に応じてウィンドウとそのサブビューを更新することができます。

+0

キーのステータスの変更は、(メインステータスではなく)この動作をトリガーする必要があります。 –

2

あなたが-drawRect:にしなければならないのは、ウィンドウがメインのステータスを持っているかどうかを確認し、それに応じて描画している:

- (void)drawRect:(NSRect)rect 
{ 
    if ([[self window] isMainWindow]) { 
     // draw active appearance 
    } else { 
     // draw inactive appearance 
    } 
} 
関連する問題