摘要:我想复制UIAlertView的可访问性行为,其背景视图仍然可见,但VoiceOver不与其交互。
详细信息:我已经为iPhone应用程序实现了辅助功能,但仍然存在一个问题。在某些情况下,我会在所有其他视图上显示一个大视图(部分透明,覆盖大部分原始视图),其中包含标签和关闭按钮。即基本上是自定义弹出/警报视图。问题是,VoiceOver继续显示它下面的视图/控件。
防止VoiceOver隐藏视图的一种方法是将整个自定义视图背景设置为可访问。但是,这并不是我们想要的,因为这个包含视图的用户不应真正与之交互,只有它的子视图(标签/按钮)应该。
答案 0 :(得分:15)
我认为你应该在你的顶层视图中使用它:
<强>目标C 强>
- (BOOL)accessibilityViewIsModal {
return YES;
}
<强>夫特强>
accessibilityViewIsModal = true
这使隐藏的View Controller的每个元素都无法访问。
实施可能是在您显示视图时将其设置为true
,并在您关闭该视图时将其设置为false
。
注意:需要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。