iOS Voiceover 从覆盖的 UIWindow 中读取

Posted

技术标签:

【中文标题】iOS Voiceover 从覆盖的 UIWindow 中读取【英文标题】:iOS Voiceover reads from covered UIWindow 【发布时间】:2018-07-05 16:54:50 【问题描述】:

我有以下设置:

UIWindow 0,windowLevel 0,rootController是app的主体,占据整个屏幕,isHidden为false,不是关键窗口 UIWindow 1,windowLevel 1,rootController 是辅助屏幕,占满整个屏幕,不透明,isHidden 为假,为关键窗口

问题:

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

我有什么遗漏吗?

【问题讨论】:

【参考方案1】:

原来有两种方法可以解决这个问题:

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

【讨论】:

您是否在窗口本身(又名.UIWindow 实例)上将accessibilityViewIsModal 设置为true

以上是关于iOS Voiceover 从覆盖的 UIWindow 中读取的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 上模拟 VoiceOver 辅助功能点击

《iOS Human Interface Guidelines》——VoiceOver

是否可以在 iOS 应用中启用或禁用 VoiceOver?

如何让 VoiceOver 在 iOS 中宣布部分标签?

iOS 辅助功能 - 如何本地化 VoiceOver 语言

Xamarin 表单 - 如何在 TabbedView (iOS) 上自定义 VoiceOver