使用 Navigation Manipulator

使用 Navigation Manipulator 设置用户可以用来在您的应用程序中导航到不同方向的键。

默认方向导航键

这些是用户可以在 Kanzi 应用程序中使用的默认方向键盘键:

  • Slider 节点启用了 Focusable 属性,并且默认情况下可以接收焦点。当 Slider 节点具有焦点时,要移动该滑块的旋钮,您可以使用这些默认键盘键:

    • Home 将滑块旋钮移动到轨道的起始位置。

    • End 将滑块旋钮移动到轨道的末端。

    • ← 和 → 用于移动水平滑块的旋钮。

    • ↑ 和 ↓ 用于移动垂直滑块的旋钮。

    要使用箭头键盘键移动滑块旋钮,请在该 Slider 节点中使用 Step Value 属性设置每次按键时旋钮移动的量。

  • 您在 Kanzi Studio 中创建的 Scroll View 节点默认启用 Focusable 属性,并且可以接收焦点。当 Scroll View 节点具有焦点时,要滚动该节点,您可以使用默认的键盘键 ←、→、↑ 和 ↓。

  • 当 List Box 节点具有焦点时,您可以使用以下默认键盘按键在可聚焦的列表项之间导航:

    • 在沿 y 轴滚动的列表框中,使用 ↑ 和 ↓ 在可聚焦项之间移动焦点。

    • 在沿 x 轴滚动的列表框中,使用 → 和 ← 在可聚焦项之间移动焦点。

    • 使用 Home 将焦点移到第一个可聚焦项。

    • 使用 End 将焦点移到最后一个可聚焦项。

    • 在网格列表框节点中,使用 Page Up 和 Page Down 将焦点向后或向前移动一页。一页对应于网格列表框节点可见区域的大小。

    请参阅 在 List Box 节点中处理键焦点。。

  • 当 Text Box 节点处于编辑状态时,要在该文本框中移动光标,您可以使用这些默认键盘键:

    • ← 将光标向后移动一个字符。

    • → 将光标向前移动一个字符。

    • Ctrl ← 将光标移动到光标前的单词边界。

    • Ctrl → 将光标移动到光标后面的单词边界。

    • Home 将光标移动到文本内容的开头。

    • End 将光标移动到文本内容的末尾。

    当 Text Box 节点处于编辑状态时,要修改该文本框中的文本选择,您可以使用这些默认键盘键:

    • Shift ← 将文本选择中的活动光标向后移动一个字符。

    • Shift Ctrl 将活动光标在文本选择中移动到当前光标位置之前的单词边界。

    • Shift Home 将文本选择中的活动光标移动到文本内容的开头。

    • Shift → 将文本选择中的活动光标向前移动一个字符。

    • Shift Ctrl → 将活动光标在文本选择中移动到当前位置之后的单词边界。

    • Shift End 将活动光标在文本选择中移动到文本内容的末尾。

    • Ctrl A 以选择所有文本。

使用 Navigation Manipulator 触发器

使用 Navigation Manipulator 触发器在用户开始、完成或取消方向导航键手势时做出反应。例如,您可以使用特定的键来使用户能够将键焦点移动到特定方向。

Navigation Manipulator 具有以下触发器:

  • 当 Kanzi 识别到导航键的按键或按键重复手势时,Key Navigation Started 触发器被激活。

    例如,当用户按下键盘上的导航键时,会发生这种情况。

  • 当 Kanzi 识别到导航键的释放手势时,Key Navigation Finished 触发器被激活。

    例如,这发生在用户释放键盘上的导航键时。

  • 当 Kanzi 识别到导航键的按键手势取消时,Key Navigation Canceled 触发器被触发。

要使用 Navigation Manipulator 触发器:

  1. 创建并配置一个 Navigation Manipulator:

    1. 在 Node Tree 或 Prefabs 中,选择一个可聚焦的节点,以接收来自按键的方向导航输入。请参阅 使用焦点。

      这些节点启用了 Focusable 属性,并且默认情况下可以接收焦点:

      • 您使用 Kanzi Engine API 或 Kanzi Studio 创建的 Button、Toggle Button、Slider 和 Text Box 节点。

      • 使用 Kanzi Studio 创建的 Scroll View 节点。

      例如:在 Prefabs 中选择一个预设占位符节点,您可以使用该节点实例化一个垂直堆叠的菜单按钮组。默认情况下,您可以通过按 Tab 键在按钮之间向前移动焦点,并通过按 Shift Tab 键向后移动焦点。请参阅 在焦点链中移动焦点 和 表明用户界面元素何时具有焦点。

      ../../_images/menu-button-in-prefabs.png ../../_images/navigation-manipulator-default-nav.gif
    2. 在 Node Components 按 Alt 并右键单击 Input Manipulators 中,选择 Navigation Manipulator。

      使用 Navigation Manipulator 将节点设置为对一个或多个键的方向导航输入做出反应。

      ../../_images/add-navigation-manipulator.png
    3. 在 Navigation Manipulator 中,添加并设置一个或多个导航键属性到您希望节点响应的键。

      例如,要配置用户可以用来向上和向下导航的键,请添加并设置 Up Navigation Key 和 Down Navigation Key 属性。

      ../../_images/navigation-manipulator-up-down-keys.png
  2. 在 Navigation Manipulator 中创建并配置您在上一步中设置的导航键的触发器:

    1. 在 Node Components 中创建一个 Navigation Manipulator 触发器。

      例如:在 Node Components 按 Alt 并右键单击 Triggers 中,选择 Message Trigger > Key Navigation > Key Navigation Started,然后为该触发器命名。

      ../../_images/create-key-navigation-started-trigger.png ../../_images/down-navigation-trigger.png
    2. 如果您在 Navigation Manipulator 中设置了多个导航键属性,请使用触发条件来配置哪个导航键触发您创建的触发器。

      在 Node Components 按 Alt 并右键单击 触发器中,选择 Trigger Condition,并在条件中设置:

      • A

        • Type of A 到 Message argument

        • Message Argument 到 Navigation Direction

      • Operation 到 =

      • B

        • Type of B 到 Fixed

        • Fixed Value 到您希望触发器响应其导航键的导航方向。

          例如,如果您希望触发器在用户按下您在 Navigation Manipulator 中使用 Down Navigation Key 属性设置的键时启动,请将 Fixed Value 设置为 Down。

      ../../_images/down-navigation-create-trigger-condition.png ../../_images/navigation-direction-down-condition.png
    3. 在 Node Components 按 Alt 并右键单击 中,创建的触发器并选择您希望触发器在用户按下您在 Navigation Manipulator 中配置的导航键时执行的操作。

      例如,选择 Move Focus 操作,并在操作设置中将 Direction 设置为 Forward。

      此操作将焦点向前移动到焦点链中的下一个节点,类似于用户按下 Tab 键时焦点的移动方式。

      ../../_images/down-navigation-create-move-focus-action.png ../../_images/move-focus-action.png

    当用户按下您在 Navigation Manipulator 中设置的键时,Key Navigation Started 触发器会启动您创建的操作。

    在此示例中,当用户按下您在 Down Navigation Key 属性中的 Navigation Manipulator 中设置的 ↓ (Arrow down) 键时,焦点将向前移动到下一个菜单按钮。

    ../../_images/navigation-manipulator-directional-nav-down.gif
  3. 重复上一步,以创建并配置另一个 Navigation Manipulator 触发器。

    例如,创建另一个 Key Navigation Started 触发器,并在该触发器中创建:

    • Trigger Condition 在用户按下您在 Navigation Manipulator 中使用 Up Navigation Key 属性设置的键时触发。

    • Move Focus 操作,您将 Direction 设置为 Backward。

    在此示例中,当用户按下您在 Up Navigation Key 属性中的 Navigation Manipulator 中设置的 ↑ (Arrow up) 键时,焦点将向后移动到下一个菜单按钮。

    ../../_images/up-navigation-trigger.png ../../_images/navigation-manipulator-directional-nav-up.gif

您可以在 Navigation Manipulator 中设置更多导航键,并创建触发器以定义用户按下这些键时会发生什么。

例如:在 Navigation Manipulator 中设置 End Navigation Key 属性,并创建一个带有 Try Set Focus 操作的 Key Navigation Started 触发器,当用户按下 End 键时,将焦点设置到组中的最后一个按钮。

../../_images/end-navigation.png ../../_images/navigation-manipulator-directional-nav.gif

使用 API 中的导航操控器

有关详细信息,请参阅 NavigationManipulator 类。

另请参阅

处理用户输入

使用焦点

使用 Key Manipulator

使用触发器

教程:为应用程序创建 UI 导航