iOS Voiceover 从覆盖的 UIWindow 中读取

rob*_*nde 5 ios voiceover uiaccessibility

我有以下设置:

  • UIWindow 0,windowLevel 0,rootController 是应用程序的主要部分,并占据整个屏幕,isHidden 为 false,不是关键窗口
  • UIWindow 1,windowLevel 1,rootController 是辅助屏幕,占据整个屏幕,不透明,isHidden 为 false,是关键窗口

问题:

当启用画外音并且我触摸窗口 1 中没有可交互元素的区域,但窗口 0 确实有这样的元素时,它将选择并读取窗口 0 中的元素,即使窗口 0根本不可见。

我有什么遗漏的吗?

rob*_*nde 7

事实证明有两种方法可以解决这个问题:

  1. 在窗口 0 上将accessibilityElementsHidden 设置为 true。这并不理想,因为当窗口 1 消失时必须将其恢复。
  2. 在窗口 1 上将accessibilityViewIsModal 设置为 true。所有窗口都是同级窗口,因此出于可访问性目的,这将忽略窗口 0。我认为这不会影响状态栏和键盘等特殊窗口。这可能是最好的解决方案。