小编Lee*_*ham的帖子

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
查看次数

正则表达式 - 匹配前导和尾随空格、左括号和右括号和单词之间的空格,但不匹配单词之间的空格

如果这个问题已经得到回答,我深表歉意,但我已经搜索过,但找不到答案。我正在尝试编写一个正则表达式,它将匹配所有前导和尾随空格、左括号和右括号与单词之间的空格,但不会匹配单词之间的空格。以下是我正在解析的数据的字符串格式示例:

[Header]  
   [  SomeSpace]     
      [  Some1 More Space 15  ]       
Run Code Online (Sandbox Code Playgroud)
  • 没有前后空格,括号之间没有空格,只有一个词。

  • 一些前导和尾随空格,左括号和尾随空格之间的空间。

  • 一些前导空格、单词和数字之间的空格、左括号和右括号之间的空格以及尾随空格。

我想出的最接近的单个正则表达式是:

/[^\[\]a-zA-Z\d]/
Run Code Online (Sandbox Code Playgroud)

但是我似乎无法仅匹配单词和数字之间的空格...

我目前用作解决方法的 ruby​​ 代码是:

line.gsub!(/^\s*/, "")
line.gsub!(/\[/, "")
line.gsub!(/\]/, "")
s = line.gsub!(/^\s*|\s*$/, "")
s = "[" + s + "]\n"
Run Code Online (Sandbox Code Playgroud)

显然,不是很漂亮......

非常感谢将其简化为优雅的 gsub 线的任何帮助。

谢谢!

ruby regex

5
推荐指数
1
解决办法
2975
查看次数

标签 统计

accessibility ×1

ios ×1

regex ×1

ruby ×1

swiftui ×1

uikit ×1

voiceover ×1