5 焦点

原文链接: https://developer.apple.com/documentation/swiftui/focus

5 焦点

识别并控制哪个可见对象响应用户交互。

概述

焦点指示显示区域中的哪个元素接收下一次输入。使用视图修饰符可以指明哪些视图能够接收焦点、检测哪个视图拥有焦点,并以编程方式控制焦点状态。

关于设计指导,请参阅 Human Interface Guidelines 中的 焦点与选择。

基础

指明视图可以接收焦点

管理焦点状态

  • focused(_:equals:) — 把视图的焦点状态绑定到给定的状态值,从而修改这个视图。
  • focused(_:) — 把视图的焦点状态绑定到给定的布尔状态值,从而修改这个视图。
  • isFocused — 返回最近的可聚焦祖先视图是否拥有焦点。
  • FocusState — 一种属性包装器类型,可以读写一个由 SwiftUI 在场景内焦点位置变化时更新的值。
  • FocusedValue — 一种属性包装器,用于从获得焦点的视图或其某个祖先视图观察值。
  • Entry() — 创建一个环境值、事务、容器值或焦点值条目。
  • FocusedValueKey — 发布和观察焦点值时所用标识符类型的协议。
  • FocusedBinding — 一种便捷的属性包装器,用于从获得焦点的视图或其某个祖先视图观察并自动解包状态绑定。
  • searchFocused(_:) — 把与最近的 searchable 修饰符关联的搜索框的焦点状态绑定到给定的布尔值,从而修改这个视图。
  • searchFocused(_:equals:) — 把与最近的 searchable 修饰符关联的搜索框的焦点状态绑定到给定的值,从而修改这个视图。

向获得焦点的视图暴露值类型

  • focusedValue(_:) — 为给定的对象类型设置焦点值。
  • focusedValue(::) — 注入一个你提供的值,供其他状态取决于焦点视图层级的视图使用,从而修改这个视图。
  • focusedSceneValue(_:) — 在场景范围内为给定的对象类型设置焦点值。
  • focusedSceneValue(::) — 注入一个你提供的值,供其他状态取决于获得焦点场景的视图使用,从而修改这个视图。
  • FocusedValues — 由获得焦点的场景或视图及其祖先视图导出的一组状态。

向获得焦点的视图暴露引用类型

  • focusedObject(_:) — 创建一个新视图,把提供的对象暴露给其他状态取决于焦点视图层级的视图。
  • focusedSceneObject(_:) — 创建一个新视图,把提供的对象暴露给其他状态取决于活跃场景的视图。
  • FocusedObject — 一种属性包装器类型,用于表示由获得焦点的视图或其某个祖先视图提供的可观察对象。

设置焦点范围

  • focusScope(_:) — 创建一个焦点范围,SwiftUI 用它来限制默认焦点偏好。
  • focusSection() — 指明应使用该视图的框架及其可聚焦后代群体来引导焦点移动。

控制默认焦点

重置焦点

  • resetFocus — 一个请求焦点系统重新评估默认焦点的动作。
  • ResetFocusAction — 一个环境值,提供重新评估默认焦点的能力。

配置效果

  • focusEffectDisabled(_:) — 添加一个条件,控制该视图是否可以显示焦点效果,例如默认的焦点环或悬停效果。
  • isFocusEffectEnabled — 一个布尔值,指示与该环境关联的视图是否允许显示焦点效果。