Swift:从视图到警报视图或到另一个视图的语音转换

Posted

技术标签:

【中文标题】Swift:从视图到警报视图或到另一个视图的语音转换【英文标题】:Swift: Voice Over transition from view to alert view or to another view 【发布时间】:2019-06-23 19:13:53 【问题描述】:

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

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

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

我已尝试将上一个视图的 accessibilityViewIsModal 设置为 false 和当前视图的 true。

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

实际结果:旁白聚焦于前一个视图 预期结果:画外音应专注于呈现的警报视图。

【问题讨论】:

你有一个 github 存储,你的代码可以在其中找到一个准确的解决方案吗? 【参考方案1】:

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

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

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

customModalView.accessibilityViewIsModal = true

我希望这会有所帮助!

【讨论】:

以上是关于Swift:从视图到警报视图或到另一个视图的语音转换的主要内容,如果未能解决你的问题,请参考以下文章

使用 Segue 在 Swift 中将带有数据的对象从一个视图传递到另一个视图

如何通过使用 swift 5 的动态集合视图从一个视图控制器移动到另一个视图控制器?

在 Swift 中将图像视图从一个视图控制器转移到另一个视图控制器

Swift 3 - 将数据从一个视图传递到另一个视图

如何通过单击按钮在 Swift UI 中从一个视图导航到另一个视图

swift 将数据从一个视图控制器传输到另一个视图控制器