Xcode4なら、アプリがアクティブな時はこういう表示になる。
これがフォーカスを失うと、こう表示される。
ToolBarやらTabやら、全部白っぽくなって「私は非アクティブ」とわかるようになっている。
自分でUI部品を作るとこの挙動も自分でコーディングしないといけない。でもまだ手を抜いているので、現在のプロジェクトだと非アクティブ時はこうなってしまう。
Tabと、その下の(これからつくろうとしている)NavigateViewがアクティブ時と同じ色でなので非常にカッコ悪い。
NavigateViewは「ディレクトリを1つ上に移動」とか「戻る」とか「進む」とかのボタンを表示しようとしている「簡易ToolBar」もどき。
このViewをつくり始めて、非アクティブ時の表示についてちょっと作業してみた。
NSAppが非アクティブになる時にNSApplicationWillResignActiveNotification、アクティブになる時にはNSApplicationWillBecomeActiveNotificationというNotificationを通知するので、それをObserveして表示を切り替えてみた。
@selector内で[NSApp isActive]をチェックしてみたけれどうまく判定できないようなので、appIsActiveみたいなインチキメンバを作っておき、それをdrawRectでチェックするようにしてみたらうまくいった。
うまくいったんだけど、これってNSAppのデリゲートになればいいだけの話ですな。UI部品になるクラスは、みんなアプリケーションのデリゲートになっているのかなあ。
というわけで、まだ手をつけていないTabの「非アクティブ時の表示」はNSAppのデリゲートになってやってみる予定。こうやってちょっとずつフレームワークの知識が増えていくのが、プログラミングの面白さでしょうか。
0 件のコメント:
コメントを投稿