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

时间:2011-02-15 01:59:38

标签: iphone ios uiview accessibility voiceover

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

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

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

4 个答案:

答案 0 :(得分:15)

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

<强>目标C

- (BOOL)accessibilityViewIsModal {
    return YES;
}

<强>夫特

accessibilityViewIsModal = true

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

实施可能是在您显示视图时将其设置为true,并在您关闭该视图时将其设置为false

More info

注意:需要iOS5及更高版本

答案 1 :(得分:0)

快捷键4

立即尝试以下操作: 在显示视图之前,请按以下步骤设置viewController的视图:

yourViewController.view.accessibilityViewIsModal = true

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

override func viewWillAppear(_ animated: Bool) {
   super.viewWillAppear(animated)
   view.accessibilityViewIsModal = true
}

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

UIAccessibility.post(notification: .screenChanged, argument: nil)

答案 2 :(得分:-1)

您可以在覆盖背景的视图上设置以下属性:

view.isAccessibilityElement = false;
view.isAccessibilityModal = true;

这有用吗?

答案 3 :(得分:-2)

隐藏项目时,可以将isAccessibilityItem设置为NO。