我正试图让VoiceOver更容易访问SwiftUI中的自定义模态视图。
我已经设置了.accessibility(addTraits: .isModal)
,但VoiceOver直到模式下的焦点元素。因此,当模态可见时,我尝试设置.accessibility(hidden: true)
。这是可行的,但VoiceOver将元素聚焦在最靠近打开模态的按钮位置的位置,但将第一个元素聚焦在模态中会更合乎逻辑。
不确定如何解决这个问题,以及最好的前进方向是什么。
Gist带有弹出代码。
https://gist.github.com/tfsjohan/80e9e39287f65fc044222468b834d74b
我的工作是将.accessibilityElement(children: .ignore)
设置为同级视图,并在显示弹出窗口之前发送UIAccessibility.post(notification: .screenChanged, argument: nil)
。这样,在导航过程中,弹出窗口后面的组件不再可用,屏幕更改事件将画外音的焦点移动到优先级最高的元素。