27

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

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

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

4

4 回答 4

24

我认为您应该在顶部视图中使用它:

Objective-C

- (BOOL)accessibilityViewIsModal {
    return YES;
}

迅速

accessibilityViewIsModal = true

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

一个实现可以是true在您显示视图时将其设置为,并false在您关闭该视图时将其设置为。

更多信息

注意:需要iOS5及以上

于 2012-12-04T12:36:58.537 回答
5

斯威夫特 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)
于 2018-11-16T04:39:37.667 回答
-2

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

view.isAccessibilityElement = false;
view.isAccessibilityViewModal = true;

这行得通吗?

在 obj-c 中:

    view.isAccessibilityElement = NO;
    view.accessibilityViewIsModal = YES;
于 2015-11-15T22:32:16.527 回答
-3

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

于 2011-08-08T07:45:26.517 回答