AccessibilityFocused

Swift GitHub license

一个适用于 iOS 14 的 iOS 15 AccessibilityFocused 视图修改器的 SwiftUI 实现。

安装

Swift Package Manager

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 测试

一个更复杂的例子,允许您 UI 测试此功能也在示例项目中显示。

虽然 iOS 模拟器不显示辅助功能焦点,但提供此更复杂的使用方法作为解决方法,仅用于 UI 测试。

当设置焦点时,此 SPM 会将辅助功能标识符更改为 focusId,因此您可以证明您的代码可以使用辅助功能焦点。

添加此功能是因为很容易破坏辅助功能,而且手动测试不太容易。

要求

iOS 13

我试图提供 iOS 13 支持,事实上你可以看到一个 iOS13-Support 分支,它有一些问题。 在 AccessibilityFocusSetterModifier.swiftmakeUIView 方法中,返回 controller.view 会冻结 iOS 模拟器。 我曾尝试将视图包装在 UIView 中,但存在大小问题,并且您无法选择文本字段中的文本。 我很乐意得到任何帮助。

👏 贡献

欢迎所有 Pull Request (PR),以帮助改进此库。

许可证

AccessibilityFocused 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。