阻止VoiceOver显示更大透明视图下方的视图

Chr*_*les 20 iphone accessibility uiview ios voiceover

简介:我想复制UIAlertView的可访问性行为,其中背景视图仍然可见,但VoiceOver不与其交互.

细节:我已经为iPhone应用程序实现了辅助功能,但仍然存在一个问题.在某些情况下,我会在所有其他视图上显示一个大视图(部分透明,覆盖大部分原始视图),其中包含标签和关闭按钮.即基本上是自定义弹出/警报视图.问题是,VoiceOver继续显示它下面的视图/控件.

防止VoiceOver隐藏视图的一种方法是将整个自定义视图背景设置为可访问.但是,这并不是我们想要的,因为这个包含视图的用户不应真正与之交互,只有它的子视图(标签/按钮)应该.

Jay*_*ySH 18

我认为你应该在你的顶层视图上使用它:

Objective-C的

- (BOOL)accessibilityViewIsModal {
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

迅速

accessibilityViewIsModal = true
Run Code Online (Sandbox Code Playgroud)

这使隐藏的View Controller的每个元素都无法访问.

实现可以是true在显示视图时将其设置为false当您关闭该视图时将其设置为.

更多信息

注意:需要iOS5及更高版本


Ram*_*min 5

斯威夫特 4

迅速试试这个:在你的视图出现之前,像这样设置你的 viewController 的视图:

yourViewController.view.accessibilityViewIsModal = true
Run Code Online (Sandbox Code Playgroud)

还尝试在 viewWillAppear 中将 self.view.accessibilityViewIsModal 设置为 true

override func viewWillAppear(_ animated: Bool) {
   super.viewWillAppear(animated)
   view.accessibilityViewIsModal = true
}
Run Code Online (Sandbox Code Playgroud)

如果您在模态或弹出视图出现时发送屏幕机会通知,也可能会有所帮助,方法是将其添加到 viewWillAppear 中:

UIAccessibility.post(notification: .screenChanged, argument: nil)
Run Code Online (Sandbox Code Playgroud)


Jas*_*son -3

当您隐藏该项目时,可以设置isAccessibilityItem为NO。