第11章


カーソル


この章は、Mac OS Xで利用できる標準カーソルについて述べており、あなた独自のカーソルを実装するための情報を提供します。標準カーソルはユーザへの反応を提供するためにデザインされています。一貫したユーザ体験を維持するために、あなたがこれらのカーソルを、それぞれが意図する目的のためにのみ使用するということが重要です。

各カーソルはホットスポット—マウスクリックが画面上のオブジェクトに作用する前に、そのオブジェクトの上に置かれていなければならないカーソルの部分—を持ちます。ホットスポットは矢印カーソルの先端や、十字線カーソルの中心点のように、直感的でなければいけません。画面上のオブジェクトはホットゾーン—マウスクリックが有効となるために、カーソルのホットスポットが内側にいなければいけない領域—を持ちます。

標準カーソル

表 11-1は標準カーソルを示し、それぞれを使用するときを説明しています。「API情報」の列はCarbonまたはCocoaでこれらを実装するための定数を与えます。

表 11-1 Mac OS Xの標準カーソル

カーソル 用途 API情報
矢印 メニューバー、デスクトップ、スクロールバー、サイズ変更コントロール、タイトルバー、閉じるボタン、拡大/縮小ボタン、ウインドウをしまうボタン、その他のコントロール Carbon: kThemeArrowCursor
Cocoa:arrowCursor
コンテキストメニュー ある項目に対し、ユーザがコンテキストメニューを開くことができることを示します。ユーザがコンテキストメニューを持つ項目の上でControlキーを押している間表示されます。 Carbon:kThemeContextual-MenuArrowCursor
Cocoa:利用できません。
エイリアス ドラッグの送り先に、元のオブジェクトのエイリアスが作成されることを示します(元のオブジェクトは移動されません)。 Carbon:kThemeAliasArrow-Cursor
Cocoa:利用できません。
消滅【プーフ】 マウスボタンが離されたら、元のオブジェクトが削除されることなく、ドラッグされている代理オブジェクトが消え去ることを示します。代理オブジェクトにのみ使用されます。 Carbon:kThemePoofCursor
Cocoa:disappearingItemCursor
コピー ドラッグの送り先に、元のオブジェクトのコピーが作成されることを示します(元のオブジェクトは移動されない)。 Carbon:kThemeCopyArrowCursor
Cocoa:利用できません。
不許可 無効なドラッグの送り先であることを示します。 Carbon:kThemeNotAllowed-Cursor
Cocoa:利用できません。
Iビーム 文字列の選択と挿入。 Carbon:kThemeIBeamCursor
Cocoa:IBeamCursor
十字線 精密な矩形選択、特に画像オブジェクトに有効です。 Carbon:kThemeCrossCursor
Cocoa:crosshairCursor
指し手 URLリンクを示します。 Carbon:kThemePointing-HandCursor
Cocoa:pointingHandCursor
開き手 ある項目が、それを含んでいる表示の内側で操作できることを示します。 Carbon:kThemeOpenHandCursor
Cocoa:openHandCursor
握り手 あるオブジェクトを含んでいる表示の内側で、押している、ずらしている、または調節している時に使用します。 Carbon:kThemeClosed-HandCursor
Cocoa:closedHandCursor
左移動 あるオブジェクト、普通はペインの分割線を、左に移動またはサイズ変更している時に使用します。ユーザが示される方向にのみオブジェクトを移動できるときに使用してください。 Carbon:kThemeResize-LeftCursor
Cocoa:resizeLeftCursor
右移動 あるオブジェクト、普通はペインの分割線を、右に移動またはサイズ変更している時に使用します。ユーザが示される方向にのみオブジェクトを移動できるときに使用してください。 Carbon:kThemeResize-RightCursor
Cocoa:resizeRightCursor
左右移動 あるオブジェクト、普通はペインの分割線を、左もしくは右に移動またはサイズ変更している時に使用します。 Carbon:kThemeResizeLeft-RightCursor
Cocoa:resizeLeftRightCursor
上移動 あるオブジェクト、普通はペインの分割線を、上に移動またはサイズ変更している時に使用します。ユーザが示される方向にのみオブジェクトを移動できるときに使用してください。 Carbon:kThemeResizeUpCursor
Cocoa:resizeUpCursor
下移動 あるオブジェクト、普通はペインの分割線を、下に移動またはサイズ変更している時に使用します。ユーザが示される方向にのみオブジェクトを移動できるときに使用してください。 Carbon:kThemeResize-DownCursor
Cocoa:resizeDownCursor
上下移動 あるオブジェクト、普通はペインの分割線を、上もしくは下に移動またはサイズ変更している時に使用します。 Carbon:kThemeResizeUp-DownCursor
Cocoa:resizeUpDownCursor

Mac OS 9からの進行表示カーソルの多くは、Mac OS Xでもまだ対応していますが、あなたは新規の開発のためにこれらを使用すべきではありません。図 11-1はあなたがMac OS Xで使用すべきでないカーソルを示します。

図 11-1 あなたがMac OS Xで使用すべきでないMac OS 9カーソル

(一時停止マーク)
回転 プラス記号 腕時計

数え下げる手 数え上げる手 数え上げ下げする手

Mac OS 9カーソルを使用する代わりに、進行インジケータを使用することを検討してください。非同期進行インジケータの使用例は図 11-2で示しています。これの利点の一つは、アプリケーションが前面でも背面でも見えるという点です。また、あなたは進行バーを表示してもかまいません。これらのコントロールを使うための詳細は「進行インジケータ」(261ページ)を参照してください。

図 11-2 非同期進行インジケータの使用例

回転する待機カーソル(図 11-3を参照)は、あるアプリケーションが受信したイベントのすべてを処理できなかったときに、window serverによって自動的に表示されます。もしアプリケーションが2秒間以上応答しないと、回転する待機カーソルが現れます。あなたのアプリケーションで回転する待機カーソルが表示されるような状況を、あなたは努めて避けなければいけません。Xcodeと共に提供されるSpin Controlアプリケーションは、あなたがこのカーソルを発生させるコードを取り除くために役立つでしょう。

図 11-3 回転する待機カーソル

Carbon:WaitNextEvent形式の代わりにCarbon Events Managerを使用してください。マウスボタンやキーボードのポーリングを行うことは避けましょう。カーソル関連の関数はAppearance.hを参照してください。

Cocoa:カーソルを表示するためにNSCousorのメソッドを使用してください。

あなたの独自カーソルをデザインする

Mac OS Xは、大きさが64 x 64ピクセルまでの32ビットRGBAカーソルに対応しています。もしこれ以上大きいカーソルが必要であれば、あなたはこれを、カーソルに追従するウインドウとして実装することができます。

あなた独自のカーソルをデザインする前に、それがユーザインタフェースに価値を加えるだろうかと自問してみましょう。それを行うことであなたは新たな、ユーザインタフェース要素の混乱の可能性を持ち込もうとしている点を認識してください。もしあなたが新しいカーソルは本当に必要であると判断したら、以下の事柄を心に留めてください…

  • あなたはカーソルのホットスポットはどこにあるかを示す必要があります。
  • あなたのカーソルは、ハードウェアによるビデオ高速化を提供しないかもしれない、古いハードウェア上でも動作できる必要があります。

もしあなたが標準カーソルのカスタム版を作成するのであれば、あなたは関連するカーソルの新規版も作成する必要があります。たとえば、もしあなたが大きい矢印カーソルを作成するなら、コピー、移動、エイリアス、消滅、その他のカスタムカーソルも作成する必要があります。

Carbon:利用できません。

Cocoa:大きい、カスタムカーソルに対応するためにNSCursorのメソッドを使用してください。


←第10章:アイコン
→第12章:メニュー