フォーカス

キーのフォーカスは、ハードウェアキーのメッセージをアプリケーション内の正しいユーザーインターフェース要素に転送します。例えば、ユーザーはキーボードの矢印キーを押してスライダーを動かしたり、Enter キーを押してボタンをクリックしたりできます。

Kanzi はノードをフォーカススコープで整理します。フォーカススコープは、フォーカスチェーンのナビゲーション処理を支援するノードです。これらは子ノードをグループ化し、そのグループ内でのフォーカスナビゲーションを制御します。また、フォーカスプロキシのように機能し、フォーカスをフォーカス可能な子ノードの1つに転送します。フォーカススコープからフォーカスを移動すると、そのスコープは最後にフォーカスされた子ノードを記憶します。

これらは、Kanzi でフォーカスがどのように機能するかの主な概念です。

  • フォーカス可能ノード は、Focusable プロパティが有効になっているノードです。フォーカス可能ノードはキー入力を受け取ることができます。

  • キー入力フォーカスノード は、現在キー入力を受け取っているノードであり、読み取り専用の Focused プロパティが有効になっています。Kanzi アプリケーションは、一度に1つのキー入力フォーカスノードしか持つことができません。

  • フォーカスチェーン は、Kanzi がそれらのノードにキーのフォーカスを設定する順序を定義するノードのシーケンスです。Kanzi は、プロジェクト内のすべてのフォーカス可能なノードをフォーカスチェーンに含めます。

    ../../_images/focus-chain.svg
  • フォーカス順序 は、ノードツリー内のノードの位置またはその Focus Order プロパティの値に基づいて、フォーカスチェーン内のノードの位置を定義します。

    ../../_images/focus-order.svg
  • フォーカススコープ は、フォーカスチェーン内でのナビゲーション処理を支援するノードです。ノードをフォーカススコープに設定することで、そのノードから子ノードにフォーカスを転送することができます。

    ../../_images/focus-scope.svg

    Kanzi でのフォーカススコープタイプは次のとおりです。

    • フォーカスグループ は、フォーカス可能なノードのグループを形成するフォーカススコープです。フォーカスグループノードがフォーカスを受け取ると、Kanzi はそのフォーカススコープのフォーカスノードにフォーカスを転送します。

      フォーカスグループの境界内およびフォーカスグループの外でフォーカスを移動できます。

    • フォーカスフェンス は、フォーカスチェーンナビゲーションをスコープ内に保持し、そのスコープに入ったり出たりすることを許可しないフォーカススコープです。フォーカスフェンスは、ユーザーがスコープの境界内でコンテンツをナビゲートすることを可能にします。

    • これらのオーバーレイタイプのフォーカススコープ:

      • モーダルオーバーレイ は、その境界外から発生するキーおよびタッチ入力をブロックし、フォーカスナビゲーションをオーバーレイの境界内に保持します。これは、フォーカスフェンスと同様です。すべての Kanzi アプリケーションには、少なくとも1つのモーダルオーバーレイ、つまり Screen ノードがあります。

      • 自動クローズモーダルオーバーレイ はモーダルオーバーレイに似ていますが、オーバーレイがパラレルアクティビティホスト内のアクティビティである場合、ユーザー入力がそのアクティビティの境界外から発生すると、パラレルアクティビティホストがそのアクティビティを非アクティブ化します。

      • モードレスオーバーレイ は、その境界外から発生するキーおよびタッチ入力を伝播しますが、モーダルオーバーレイと同様に、フォーカスナビゲーションをフォーカススコープの境界内に保持します。

      • 自動クローズモデルレスオーバーレイ はモデルレスオーバーレイに似ていますが、オーバーレイがParallel Activity Host内のアクティビティである場合、ユーザー入力がそのアクティビティの境界外から発生すると、Parallel Activity Hostがそのアクティビティを非アクティブ化します。

  • フォーカス状態 は、フォーカススコープ内のノードまたはノードのフォーカス状態を報告します。Focus State プロパティに利用可能な値は次のとおりです。

    列挙値

    列挙キー

    フォーカス可能なノードの意味

    フォーカススコープの意味

    No Focus

    0

    ノードはフォーカスを持っていません。

    フォーカススコープ内のノードのいずれもフォーカスを持っていません。

    Logical Focus

    1

    ノードは、オーバーレイタイプのフォーカススコープの論理フォーカスノードです。論理フォーカスノードは、オーバーレイがフォーカスを失う前のキーのフォーカスノードでした。オーバーレイがフォーカスを再取得すると、論理フォーカスノードがキーのフォーカスノードになります。

    フォーカススコープ内のノードは、そのスコープが属するオーバーレイの論理フォーカスノードです。

    Key Focus

    2

    ノードはキーのフォーカスノードです。

    フォーカススコープ内のノードは、キーのフォーカスノードです。

アプリケーションのフォーカスナビゲーションの作成について詳しくは、フォーカスの使用 を参照してください。

関連項目

フォーカスの使用

チュートリアル: アプリケーションのUIナビゲーションを作成する

ユーザー入力の処理