macosx-dev-jp のメーリングリストで ちと質問があったので、気分転換がてら作ってみました。最初この質問を読んだとき、first mouse を受けたくないのかなと判断してたのですが、なんか見た目の話っぽいと。個人的には UI 的にどうか少し引っかかったのですが、まぁ確かに、バックグラウンドになったときにディム表示してくれるならそれに越したことはないか、一理あるんだろうな。
実装については添付のディスクイメージを見てもらえれば分かるようにとても簡単。View のサブクラスであるため、IB で配置されることを前提としてます。だから -init系の初期化メソッドは IB で配置されたときに動作しちゃって、アプリの起動時には実行されません。IB は単なるお絵かきツールじゃなくて、本物のオブジェクトのインスタンスを生成している、それをアーカイブしているというのが大きなポイントです。なので、-awakeFromNib でnibからロードされたときに改めて必要なコードを実行してます。
必要な...っといっても、やってることは二つの Notification を観察することのみ。飛んできたら自分の状態確認して、必要なら再表示をしているという次第です。
ついでなのでローカライズについて Xcode の使い方のお勉強を兼ねてたり。Localizable.strings の生成は genstrings コマンド一発だよなぁとか、nib とかの言語リソースの追加は一つずつ Command-I してインスペクタから言語を追加すればいいとかの再確認ね。
ButtonTest.dmg