1.12 输入与事件修饰符

原文链接: https://developer.apple.com/documentation/swiftui/view-input-and-events

1.12 输入与事件修饰符

为视图提供动作,以响应用户输入和系统事件。

概述

使用输入与事件修饰符可以为各种各样的用户输入或系统事件配置并提供处理器。例如,你可以检测和控制焦点、响应视图出现与消失等生命周期事件、管理键盘快捷方式等等。

交互性

列表控件

容器控件

滚动控件

几何信息

点按与手势

键盘输入

键盘快捷方式

手部交互

悬停

指针

焦点

  • focused(_:equals:) — 把视图的焦点状态绑定到给定的状态值,从而修改这个视图。
  • focused(_:) — 把视图的焦点状态绑定到给定的布尔状态值,从而修改这个视图。
  • focusedValue(_:) — 为给定的对象类型设置焦点值。
  • focusedValue(::) — 注入一个你提供的值,供其他状态取决于焦点视图层级的视图使用,从而修改这个视图。
  • focusedSceneValue(_:) — 在场景范围内为给定的对象类型设置焦点值。
  • focusedSceneValue(::) — 注入一个你提供的值,供其他状态取决于获得焦点场景的视图使用,从而修改这个视图。
  • focusedObject(_:) — 创建一个新视图,把提供的对象暴露给其他状态取决于焦点视图层级的视图。
  • focusedSceneObject(_:) — 创建一个新视图,把提供的对象暴露给其他状态取决于活跃场景的视图。
  • prefersDefaultFocus(_:in:) — 指明在给定命名空间中该视图应默认接收焦点。
  • focusScope(_:) — 创建一个焦点范围,SwiftUI 用它来限制默认焦点偏好。
  • focusSection() — 指明应使用该视图的框架及其可聚焦后代群体来引导焦点移动。
  • focusable(_:) — 指明该视图是否可聚焦。
  • focusable(_:interactions:) — 指明该视图是否可聚焦,若可聚焦,还指明它支持哪些由焦点驱动的交互。
  • focusEffectDisabled(_:) — 添加一个条件,控制该视图是否可以显示焦点效果,例如默认的焦点环或悬停效果。
  • defaultFocus(::priority:) — 通过给给定的焦点状态绑定赋值,定义窗口中评估默认焦点的区域。
  • searchFocused(_:) — 把与最近的 searchable 修饰符关联的搜索框的焦点状态绑定到给定的布尔值,从而修改这个视图。
  • searchFocused(_:equals:) — 把与最近的 searchable 修饰符关联的搜索框的焦点状态绑定到给定的值,从而修改这个视图。

拷贝与粘贴

拖放

重新排序

提交

移动

  • onMoveCommand(perform:) — 添加一个动作以响应移动命令,例如用户在 Mac 键盘上按方向键,或在控制 Apple TV 时轻点 Siri Remote 的边缘。
  • moveDisabled(_:) — 添加一个条件,决定视图的视图层级是否可移动。

删除

  • onDeleteCommand(perform:) — 添加一个动作,以响应系统的“删除”命令,或者在视图拥有焦点时按下 ⌫(退格)或 ⌦(向前删除)键。
  • deleteDisabled(_:) — 添加一个条件,决定视图的视图层级是否可删除。

命令

数码表冠

游戏控制器

沉浸式空间

立体空间

用户活动

视图生命周期

文件重命名

URL

  • onOpenURL(perform:) — 注册一个处理器,以响应应用收到的 URL。
  • onOpenURL(prefersInApp:) — 设置一个偏好使用应用内浏览器打开 URL 的 OpenURLAction。handler 闭包接收一个 URL 作为输入,并返回一个表示该动作结果的 OpenURLAction.Result。
  • widgetURL(_:) — 设置当用户点按小组件时要在所属应用中打开的 URL。

异步图像加载

  • asyncImageURLSession(_:) — 一个修饰符,为视图中包含的异步图像添加获取图像数据时要使用的 URL 会话。

发布者事件

  • onReceive(_:perform:) — 添加一个动作,当该视图检测到给定发布者发出的数据时执行。

命中测试

内容形状

导入与导出

App Intent

相机