使用焦点

键盘焦点转发硬件按键消息到您的应用程序中的正确的用户界面元素。例如,用户可以按下键盘上的方向键移动滑块,也可以按下 Enter 键或点击一个按钮。 您可以使用Kanzi 用于导航的默认键,或者设置特定键盘键。请参阅默认键盘导航键设置特定键盘键以移动焦点

要在您的 Kanzi 应用程序中处理焦点,您可以:

通过完成教程学习如何使用焦点。请参阅教程:使用键盘输入来导航应用程序

默认键盘导航键

这些是可用于在您的应用程序中导航焦点的默认键盘键:

设置焦点

当用户界面元素具有焦点时,用户可以使用键盘键与用户界面元素进行交互。屏幕 (Screen) 节点默认具有焦点。

要设置焦点:

  1. 工程 (Project) 中,选择要设置焦点的那个节点,然后在节点组件 (Node Components) 中添加一个用于触发设置焦点动作的触发器。
    例如,添加页面已激活 (Page Activated) 触发器。页面已激活 (Page Activated) 触发器在页面 (Page)主页面 (Page Host) 节点变为活动时触发。
  2. 节点组件 (Node Components) 中,为页面已激活 (Page Activated) 触发器添加设置焦点 (Set Focus) 动作。
    您设置应用程序在您添加触发器的页面 (Page)主页面 (Page Host) 节点活动时设置焦点到节点。
  3. 设置焦点 (Set Focus) 动作中,将目标项 (Target Item) 设置为要设定焦点的节点。
    例如,将目标项 (Target Item) 设置到2D 滑块 (Slider 2D) 节点,当节点活动时设置焦点到页面 (Page)主页面 (Page Host) 该节点的滑块。

当导航至添加了触发器的页面 (Page) 节点,会将焦点设置为您在该动作中设置的节点。例如,如果将焦点设置到滑块 (Slider) 节点,则您可以默认使用键盘上的方向键移动滑块。

表明用户界面元素何时具有焦点

您可以设置用户界面元素(例如按钮或滑块),以使其在具有焦点时更改外观。例如,您可以在按钮具有焦点时突出显示按钮,或者在滑块具有焦点时更改滑块旋钮的外观。

要表明用户界面元素何时具有焦点:

  1. 工程 (Project) 中,选择要为其创建焦点可视化的节点,并在状态工具 (State Tools) 中点击创建状态机 (Create State Manager) 以便为节点创建状态机。

  2. 状态工具 (State Tools) 中点击创建状态 (Create State) 两次以创建两个状态。对它们进行命名,例如命名为 NotFocusedFocused
    NotFocused 状态定义了您的应用程序在节点没有焦点时的状态,而 Focused 状态定义了节点有焦点时的状态。

  3. 工程 (Project) 中,选择要为其创建焦点可视化的节点,并设置您希望在节点有焦点时更改的属性的值。
    例如,当滑块具有焦点时,您可以对滑块旋钮使用另一幅图像。
  4. 状态工具 (State Tools) 中,点击用于定义当节点有焦点时的节点外观的那个状态下方的 ,以便将当前属性值保存到该状态中。
    例如,点击 Focused 状态下方的

  5. 状态工具 (State Tools) 中点击<No Controller Property> 下拉菜单并选择节点 (Node) > 已聚焦 (Focused)属性。
    已聚焦 (Focused) 属性设置为状态机的控制器属性时,状态机会根据属性的值迁移到某个状态。

  6. 状态工具 (State Tools) 中,在用于定义当节点具有焦点时的节点外观的那个状态的下方,将已聚焦 (Focused) 属性的值设置为 True

  7. 状态工具 (State Tools) 中点击编辑状态机 (Edit State Manager) 停用状态工具 (State Tools)

将焦点设置为滑块时,滑块旋钮的外观会发生变化。

在焦点链中移动焦点

焦点链是节点序列,它定义了 Kanzi 设置焦点到这些节点的顺序。Kanzi 在焦点链中自动包括工程中的所有节点。默认情况下,焦点链将活动焦点从每个节点移动到下一个子节点。当节点没有能接收焦点的子节点,焦点移动到工程树中的下一个节点。您可以定义自定义焦点链,或设置哪个节点在当前获得焦点的节点之后接收焦点,以重定向默认焦点链导航。

要在焦点链中移动焦点:

  1. 工程 (Project) 中选择要接收焦点的各节点,并在属性 (Properties) 中添加和设置要接收焦点的节点:

    您可以按下 Tab 键移动到焦点链中的下一个节点,按下 Shift Tab 键移动到上一个节点。

    您可以按下(左箭头)、(右箭头)、(上箭头)和(下箭头)将焦点移动至左、右、上、下导航节点。

    建议

    您可以使用别名或指向每个节点的路径定义焦点链。
    别名提供设置焦点链中节点的便捷方式。请参阅使用别名

  2. 工程 (Project) 中选择禁用焦点的各节点,并在属性 (Properties) 中右键点击,选择添加属性 (Add Property) > 节点 (Node) > 可聚焦 (Focusable) 属性,并禁用该属性。


设置焦点范围

使用焦点范围处理在焦点链中的导航。您可以将节点设置为焦点范围,将焦点从该节点前进到子节点。当设置焦点到焦点范围时,Kanzi 将焦点前进到该范围具有逻辑焦点的子节点。

要设置焦点范围:

  1. 工程 (Project) 中,选择要设置为焦点范围的节点,并在属性 (Properties) 中添加并启用焦点范围 (Focus Scope) 属性。
  2. 工程 (Project) 中选择要设置焦点的焦点范围节点的子节点,并在属性 (Properties) 中添加并启用逻辑焦点 (Logical Focus) 属性。
    当设置焦点到焦点范围节点时,启用逻辑焦点 (Logical Focus) 属性的子节点接收焦点。如果焦点范围有多个启用逻辑焦点 (Logical Focus) 属性的子节点,焦点管理器将焦点设置到最后一个子节点。

设置焦点围栏

使用焦点围栏在应用程序的一部分中导航焦点。焦点围栏允许用户在焦点范围边界内进行内容导航。例如,您可以使用焦点围栏为导航栏或弹出窗口创建键盘导航。

要设置焦点围栏:

  1. 工程 (Project) 中,选择要设置为焦点围栏的节点,并将该节点设置为焦点范围。请参阅设置焦点范围
  2. 工程 (Project) 中,选择要设置为焦点范围的节点,并在可聚焦 (Focusable) 中添加属性 (Properties) 属性,并禁用该属性。
    当设置焦点范围不接收焦点时,您不能导航至焦点范围边界或从焦点范围边界导航。

设置特定键盘键以移动焦点

在为您的应用程序创建键盘导航时,您可以设置用户可以使用哪些键盘键来导航应用程序。您可以重写默认焦点导航键,并使用特定键设置焦点到节点或在焦点链中移动焦点。

要设置特定键盘键以移动焦点:

  1. 工程 (Project) 中选择要通过特定键盘键移动其焦点至另一个节点的节点。
  2. 节点组件 (Node Components) 中右键点击触发器 (Triggers),并添加键盘 (Keyboard) > 键按下 (Key Down) 触发器。
    使用键按下 (Key Down) 触发器触发动作,当用户按下键盘上的特定键时将焦点设置到节点。

  3. 节点组件 (Node Components) 中点击触发器设置 (Trigger Settings),并在触发器设置编辑器 (Trigger Settings Editor) 中点击添加条件 (Add condition)触发器条件编辑器 (Trigger Condition Editor) 即会打开。
    您可以这里使用触发条件设置触发器必须满足哪些条件才能触发。当您添加触发器的节点具有焦点,并且用户按下键盘上的特定键,触发键按下 (Key Down) 触发器。
  4. 触发器条件编辑器 (Trigger Condition Editor) 中,设置哪个键盘键触发键按下 (Key Down) 触发器:


    触发器条件编辑器 (Trigger Condition Editor)触发器设置编辑器 (Trigger Settings Editor) 窗口中点击保存 (Save)

  5. 节点组件 (Node Components) 中,为键按下 (Key Down) 触发器添加移动焦点 (Move Focus) 动作。

  6. 移动焦点 (Move Focus) 动作中将方向 (Direction) 属性设置为您要移动焦点的焦点链中的方向。
    例如,要移动焦点到焦点链中的下一个节点,将方向 (Direction) 属性设置为前进 (Forward)。请参阅在焦点链中移动焦点

当用户按下E 键,键按下 (Key Down) 触发器触发动作,按照移动焦点 (Move Focus) 动作中设定的方向移动焦点到下一个可获得焦点的节点。

在 API 中使用焦点

有关详细信息,请参阅 API reference中的 FocusManager 类。

另请参阅

焦点

教程:使用键盘输入来导航应用程序

使用状态机

动作参考