将旁白限制为活动视图控制器
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 用户。以上是关于将旁白限制为活动视图控制器的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序处于活动状态时,不会在我的视图控制器中调用 viewWillAppear