首页 > 解决方案 > Swift:从视图到警报视图或到另一个视图的语音转换

问题描述

我目前正在开发一个应用程序,我正在使用 UIAccessibility 使其直观且易于所有人使用。

我面临着我认为是一个简单的挑战,但我就是想不通,我需要任何指导和/或帮助。

我有一个 tableView,当一个单元格根据其内容被点击时,它要么呈现一个警报视图,要么呈现一个 viewController。当启用画外音并点击单元格时,画外音会停留在前一个视图上,而不是呈现的 viewController 或 alertView 上。我如何做到这一点,当点击一个单元格时,画外音会专注于当前视图而不是前一个视图。

我已经尝试将上一个视图的 accessibilityViewIsModal 设置为 false 和 true 来呈现视图。

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
   tableView. accessibilityViewIsModal = false
    }

实际结果:画外音关注前一个视图 预期结果:画外音应该关注呈现的警报视图。

标签: iosswiftaccessibilityuiaccessibility

解决方案


大多数时候,当呈现警报或模态视图控制器时,它应该可以正常工作。你能分享更多关于你如何展示这些的细节吗?如果您正在使用自定义模式演示文稿或者您有自定义警报视图,您有时可能需要通知 UIAccessibility 屏幕已更改。您可以发布这样的通知:

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

其中 customModalView 是您想​​要获得 VoiceOver 焦点的视图。有时您可能还会发现您描述的问题,焦点仍然可以跳转到当前视图下方的视图中的元素。为此,您可以使用您提到的属性accessibilityViewIsModal。但此属性的值默认为 false,您必须将您的 'modalView' 设置为模态,以便在呈现时为可访问性目的,这将允许 VoiceOver 知道它需要跳过任何同级视图。

customModalView.accessibilityViewIsModal = true

我希望这有帮助!


推荐阅读