相关疑难解决方法(0)

初始VoiceOver选择

我正在为我的应用添加VoiceOver支持.到目前为止,这么好,但我真的希望能够指定哪个元素是UIAccessibilityScreenChangedNotification之后的第一个元素.我还没有看到这样做的方法.制作一些摘要元素似乎并没有真正做到这一点.我错过了什么吗?

accessibility ios voiceover

15
推荐指数
1
解决办法
6038
查看次数

辅助功能焦点

使用辅助功能

虽然VoiceOver按顺序读取应用程序中的元素,但无论如何都要将焦点转移到元素之间?我尝试使用"nextResponder",但它无法正常工作.

iphone accessibility focus ios voiceover

12
推荐指数
1
解决办法
5505
查看次数

ADA - 以编程方式将 VoiceOver 焦点转移到另一个 SwiftUI 视图 - 与 IOS 13+ 兼容

概述:

我很难理解如何在与 IOS 13+ 兼容的SwiftUI 视图中以编程方式正确转移辅助功能焦点。

不幸的是,这意味着无法使用 IOS 15+ 中提供的较新的 SwiftUI 焦点管理 API。

我看到的大多数建议与以下帖子类似:

iOS 更改辅助功能焦点。

它建议使用UIAccessibility.post(notification: .screenChanged/layoutChanged) argument: View)来更改焦点

然而,我的尝试没有成功。

我已经能够以与下面的代码相同的方式成功使用UIAccessibility.post(notification: .announcement) argument: String),并且它确实按预期宣布了刺痛。它花费的时间比 asyncAfter 计时器要长得多(可能需要 8 秒),但它似乎表明 post() 调用正在工作。

代码示例:

自定义展开/折叠,带有 V 形向上或向下,具体取决于它是展开还是折叠。

我希望能够以编程方式控制焦点扩展时的位置。例如,我可能希望能够让 VoiceOver 聚焦在打开的扩展菜单中的“菜单项 3”上。

我认为接近下面代码的东西可能会起作用,但我对帖子中的参数视图如何工作缺乏了解,并且不确定是否有办法使用 SwiftUI 视图,或者我是否需要创建一个UIKit 视图并使用 UIViewRepresentable 或使用 UIHostingController 包装它?

目前的行为

展开菜单时,VoiceOver 会移至第一项。当菜单折叠时,VoiceOver 焦点将转移到最后一个文本视图。

期望的行为

我希望能够在展开菜单时明确决定 VoiceOver 焦点的位置,并能够在视图出现时将更多焦点集中到特定视图

我还考虑了使用 SwiftUI/IOS 13+ 中提供的工具的其他方法。例如,我使用accessibility(sortPriority:)和accessibilityElement(children: .combine/.contain/.ignore)来达到预期的结果,但这些努力也被证明是不成功的。

代码搜索:

以下 GitHub 搜索目前分别产生 10 和 13 个结果:

https://github.com/search?q=UIAccessibility.post%28notification%3A+.layoutChanged+View+%22import+swiftui%22&type=code

https://github.com/search?q=UIAccessibility.post%28notification%3A+.screenChanged+View+%22import+swiftui%22&type=code

在这些结果中,SwiftUI 视图中使用的结果使用了“nil”参数(据说将焦点转移到屏幕上的第一项)

这让我怀疑我是否真的偏离了轨道。 …

accessibility uikit ios voiceover swiftui

7
推荐指数
1
解决办法
3477
查看次数

标签 统计

accessibility ×3

ios ×3

voiceover ×3

focus ×1

iphone ×1

swiftui ×1

uikit ×1