关于ios:设置ViewController中的所有元素不被VoiceOver读取

Set all elements in a ViewController to not be read by VoiceOver

我正在寻找一种方法来告诉 VoiceOver 不要读取整个 ViewController 的元素。原因是,我有一个按钮,当按下它时,会在屏幕上显示一个模态的 VC。我说modal-ish,因为它不是modal,而是一个自定义的VC,里面有一个自定义的动画,实际上并没有覆盖整个屏幕,所以新的VC和旧的VC同时在视图中并保持在内存中。

当用户用两根手指滑动阅读屏幕上的所有元素时,VoiceOver 将首先阅读我的新 VC 中的元素,就像它应该的那样,然后它会开始阅读这个 VC 后面现在"隐藏"的元素" (在引号中,因为它们没有以编程方式设置为隐藏,只是因为 VC 覆盖了它们而被隐藏)并且不应该被阅读。

有什么简单的方法可以让 VoiceOver 跳过整个旧 VC?或者我是否必须逐个元素地检查,并将 isAccessibilityElement 设置为 NO,然后在覆盖 VC 被解除时返回 YES?


如果您想跳过特定元素的配音,则必须禁用该元素的可访问性(如果它已在情节提要中设置),否则您必须以编程方式进行。您必须设置 IsAccessibilityElement to NO,以使语音跳过该元素。

还有另一种方法可以做到这一点。您必须创建一个数组并提供您希望语音读取的元素,因此当您希望将此数组提供给:accessibilityElements 时,语音 ovr 将只读取您在数组中提供的元素。您可以随时根据需要修改数组。