一个适用于 iOS 14 的 iOS 15 AccessibilityFocused 视图修改器的 SwiftUI 实现。
dependencies: [
.package(url: "https://github.com/JulesMoorhouse/AccessibilityFocused.git", from: "1.0.0")
]
⚠️ 注意: AccessibilityFocused 仅在物理设备上有效,您还必须开启旁白(或参阅下面的 UI 测试)。
使用 import AccessibilityFocused
将包导入到您的 swift 文件中。
有两种不同的方法来使用 AccessibilityFocused
,在底层,它设置了一个 AccessibilityIdentifier
。 这是提供指示哪个字段被聚焦的句柄所必需的。
这是一个最基本的实现,显然你需要另一个元素来给予不同的焦点,因为这是唯一的字段。 请注意,与 iOS 15 版本的 accessibilityFocused
不同,我们使用 state
作为布尔值。
因此,如果您停止使用此 SPM (如果您放弃 iOS 14),您只需要删除状态名称。
import AccessibilityFocused
import SwiftUI
struct ContentView: View {
@State private var accessibilityFocus1: Bool = false
@State private var text1 = ""
var body: some View {
TextField("Text 1", text: $text1)
.accessibilityFocused(state: $accessibilityFocus1)
}
}
一个更复杂的例子,允许您 UI 测试此功能也在示例项目中显示。
虽然 iOS 模拟器不显示辅助功能焦点,但提供此更复杂的使用方法作为解决方法,仅用于 UI 测试。
当设置焦点时,此 SPM 会将辅助功能标识符更改为 focusId,因此您可以证明您的代码可以使用辅助功能焦点。
添加此功能是因为很容易破坏辅助功能,而且手动测试不太容易。
我试图提供 iOS 13 支持,事实上你可以看到一个 iOS13-Support
分支,它有一些问题。 在 AccessibilityFocusSetterModifier.swift
的 makeUIView
方法中,返回 controller.view
会冻结 iOS 模拟器。 我曾尝试将视图包装在 UIView 中,但存在大小问题,并且您无法选择文本字段中的文本。 我很乐意得到任何帮助。
欢迎所有 Pull Request (PR),以帮助改进此库。
AccessibilityFocused 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。