将旁白限制为活动视图控制器

Posted

技术标签:

【中文标题】将旁白限制为活动视图控制器【英文标题】:Limit Voice Over to active view controller 【发布时间】:2017-09-21 13:27:52 【问题描述】:

我有一个带有经典“汉堡菜单”的应用来打开设置。按下时从左侧滑入,覆盖大部分屏幕。然而,当 Voice over 被激活并且你在最后一个元素处于活动状态时向右滑动时,它会激活隐藏视图控制器中的第一个元素。我想这对于拆分视图控制器来说是有意义的,但在这种情况下不是。

是否可以让 Voice Over 只“看到”活动视图控制器中的元素?

【问题讨论】:

您是否尝试为汉堡菜单视图设置accessibilityElementsHidden(隐藏时设置为true,显示时设置为false)? 【参考方案1】:

您希望汉堡菜单在当前上下文中表现为模式。您可以这样实现:

menuViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext

【讨论】:

【参考方案2】:

以上答案的组合使我找到了很好的解决方案。最大的问题是为我的设置视图找到容器视图。当我这样做时,我在按下汉堡按钮时使用accessibilityViewIsModal = true,在关闭时使用accessibilityViewIsModal = false

主内容容器视图上的accessibilityElementshidden 也有效,但我觉得将设置视图标记为模式更有意义。

【讨论】:

在这种情况下,由于操纵可访问性 API 而产生的变化并不理想。视图应该对每个人都是模态的,而不仅仅是 AT 用户。

以上是关于将旁白限制为活动视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

将现有和活动的手势识别器传递给模态视图控制器

如何将根视图控制器默认为 1024x768 大小的横向

如何将 BLE 活动继续到下一个视图控制器

当应用程序处于活动状态时,不会在我的视图控制器中调用 viewWillAppear

是否可以使用约束将视图高度指定为父视图的百分比,但也可以限制最大结果高度?

限制每个视图控制器的方向