「Currency Converter」ウインドウには現在、設計どおりに機能するために必要なオブジェクトはすべて含まれています。このセクションでは、これをユーザにとってより使い勝手のよいものにするために、ウインドウとメニューを書式設定する手順を説明します。
メニューを設定する
ウインドウ内でのオブジェクトの整列
ウインドウサイズの仕上げ
テキストフィールド間のタブ移動を可能にする
最初のレスポンダとなるテキストフィールドを設定する
デフォルトでは、Interface Builderは、メニューバーやアプリケーションのメニュー階層全体を通じて、アプリケーション名の位置にNewApplicationという文字列を配置します。このテキストを、アプリケーションメニューやヘルプメニューなど、アプリケーション名が含まれるすべてのメニュー項目において、実際のアプリケーション名に変更する必要があります。
アプリケーションメニューを名称変更するには次の手順を実行します。
「MainMenu」ウインドウで、NewApplicationをダブルクリックしてこのテキストを編集用にハイライトします。
テキストの位置にCurrency Converterと入力し、Returnキーを押します。
重要: 実行時は、アプリケーションメニューのタイトルは、nibファイルに指定するタイトルではなく、application-nameプロパティの値(CFBundleName情報プロパティリストのキーの値)によって決まります。詳細については「Info.plistファイル」を参照してください。
アプリケーションメニューの文字列を変更します。
プログラムのツールバーに似た「MainMenu」ウインドウで、「Currency Converter」をクリックします。次に「About NewApplication」をダブルクリックしてNewApplicationをCurrency Converterに置き換えます。
「Currency Converter」の「Hide NewApplication」を、「Hide Currency Converter」に変更します。
「Currency Converter」の「Quit NewApplication」を、「Quit Currency Converter」に変更します。Currency Converterアプリケーションメニューは、図 4-9に示すようなメニューになっているはずです。
「Help」メニューで、「NewApplication Help」を「Currency Converter Help」に変更します。
魅力的なユーザインターフェイスにするために、インターフェイスオブジェクトを行列形式で視覚的に整列させる必要があります。整列を「目視」で行うのは非常に困難ですが、x/y座標を手入力するのも手間がかかります。ユーザインターフェイス要素には影があり、ユーザインターフェイスガイドラインの指標では、一般に影は考慮されていないため、ユーザインターフェイス要素の整列はさらに困難です。Interface Builderは視覚的なガイドとレイアウト矩形を使って、オブジェクトの整列を支援します。
Cocoaでは、描画はすべてオブジェクトのフレームの境界内で行われます。インターフェイスオブジェクトには影が付いているため、フレームの縁の位置を揃えると、オブジェクトは視覚的には正しく整列しません。たとえば、『Apple Human Interface Guidelines』では、プッシュボタンの高さは20ピクセルとすると指定されていますが、実際にはボタンとその影に32ピクセルのフレームが必要です。整列しなければならないのは、レイアウト矩形です。Interface Builderでは、「Layout」メニューの「Show Layout Rectangles」コマンドを使ってオブジェクトのレイアウト矩形を表示できます。
Interface Builderは、ウインドウ内でオブジェクトを整列するための方法をいくつか提供しています。
マウスとレイアウトガイドでオブジェクトをドラッグする
矢印キーを押す(グリッドをオフにして、選択したオブジェクトを1ピクセルずつ移動する)
リファレンスオブジェクトを使って、選択したオブジェクトを行列形式で配置する
組み込まれている整列関数を使う
インスペクタの「Size」パネルで起点を指定する
「Layout」メニューの「Alignment」サブメニューには、一般的な整列操作を実行するときに使用できるコントロールなど、各種の整列コマンドとツールが提供されています。
Currency Converterインターフェイスはほぼ完成しています。最後の仕上げは、すべてのユーザインターフェイス要素がすべて中央に揃えられ、各端が正しく整列されるように、ウインドウをサイズ変更することです。現在、オブジェクトは上端と右端だけに整列されています。
「Currency Converter」ウインドウを仕上げるには、次の手順を実行します。
「Amount in Other Currency」テキストラベルを選択し、ほかの2つのラベルを含むように選択範囲を拡大します(Shiftキーを押しながらクリック)。
「Layout」>「Size to Fit」を選び、すべてのラベルをその最小幅にサイズ変更します。
「Layout」>「Alignment」>「Align Right Edges」を選びます。
ラベルをウインドウの左端方向にドラッグし、レイアウトガイドが表示されたら放します。
3つのテキストフィールドを選択して左方向にドラッグします。ここでもガイドを使って正しい位置を確認します。
横の区切り線を短くして、再度ボタンをテキストフィールドの下の位置まで移動します。
ウインドウの高さと幅を、テキストフィールドの右側にレイアウトガイドが表示されるまで小さくします。
MainMenu.nibでWindowオブジェクトを選択します。
ウインドウがその構成要素に対して完璧なサイズになったので、ユーザにはウインドウのサイズ変更をさせたくありません。インスペクタの「Attributes」タブで、「Controls」セクションの下の「Resize」チェックボックスが選択解除されていることを確認します。
この時点で、アプリケーションのウインドウは図 4-10のように表示されているはずです。
Currency Converterユーザインターフェイス作成の最後のステップは、外見以外の動作に関連することです。最初の編集可能フィールドから2番目のフィールドへ移動するときと、最初のフィールドに戻るときにユーザがタブで移動できるようにする必要があります。Interface Builderライブラリの多くのオブジェクトは、nextKeyViewという名前のアウトレットを持っています。この変数は、ユーザがTabキーを押したときに次のオブジェクト(Shift-Tabキーが押されたときには直前のオブジェクト)を識別してキーボードイベントを受け取ります。Cocoaアプリケーションは、デフォルトではテキストフィールドのタブ移動の処理方法について「最善の推測」を行いますが、この推測は予期しない結果を生むこともあります。フィールド間のタブ移動を修正する場合は、nextKeyViewアウトレットを通じてフィールドを接続する必要があります。
テキストフィールド間をタブ移動するには次の手順を実行します。
「Exchange Rate」テキストフィールドを選択します。
図 4-11に示すように、「Exchange Rate」テキストフィールドから「Dollars to Convert」テキストフィールドへ、Controlキーを押しながら接続をドラッグします(Controlキーを押し、次に接続線をドラッグします)。
「Outlets」の下のnextKeyViewを選択します。これで、Tabキーが押された後にイベントに反応する次のオブジェクトを識別します。
「Dollars to Convert」テキストフィールドから「Exchange Rate」テキストフィールドへの移動に関して、同じ手順を繰り返します。
テキストフィールド間のタブ移動を設定したので、Currency Converterに、どのテキストフィールドが最初に選択されるかを指定します。initialFirstResponderを設定することによってこれを行います。
initialFirstResponderは、アプリケーションの起動時にデフォルトで選択されるオブジェクトです。このアウトレットを設定しない場合、ウインドウはキーループを設定してデフォルトのinitialFirstResponderを選択します(指定したオブジェクトと同じになるとは限りません)。
「Currency Converter」ウインドウにinitialFirstResponderアウトレットを設定するには、次の手順を実行します。
図 4-12に示すように、MainMenu.nibウインドウのWindowインスタンスから「Exchange Rate」テキストフィールドへ、Controlキーを押しながら接続をドラッグします。
initialFirstResponderを選択します。
これでCurrency Converterユーザインターフェイスは完成しました。
Last updated: 2008-01-24