首页 文章

防止VoiceOver自动聚焦对象

提问于
浏览
1

在主屏幕上,当您用三根手指滑动以浏览主屏幕页面时,请注意焦点应用程序在滑动时失去焦点,页面更改,VoiceOver宣布新页码,然后强制将第一个应用程序聚焦在该页面上 . 有一段时间没有任何重点 . 我的应用程序中有类似的界面,我需要做同样的事情 .

现在我发布一个公告来说明页码,然后我以编程方式更改页面,但是在VoiceOver自动将一个元素集中在新页面然后它宣布该标签之前,此公告没有机会完成 . 我的公告被打断了 .

如何防止VoiceOver在切换 UIPageViewController 中的页面时自动聚焦元素,或以其他方式获得所需的行为?

编辑:我看到你应该在页面改变时发布 UIAccessibilityPageScrolledNotification ,你可以提供一个字符串作为VoiceOver宣布陈述新页面位置的参数 . 但是,没有办法知道这个通知什么时候结束我不相信,所以一旦完成说话,我就不能强制关注 .

1 回答

  • 3

    如果要提供自定义滚动状态通知,请实施-accessibilityScrollStatusForScrollView:以向辅助功能客户端提供滚动状态字符串 . 如果覆盖 -accessibilityScroll: ,则发布UIAccessibilityPageScrolledNotification .

    如果您想对公告进行排序,请注册UIAccessibilityAnnouncementDidFinishNotification并在通知处理程序中发布您的屏幕更改通知 . 请注意通知字典中也存在 UIAccessibilityAnnouncementKeyWasSuccessful 键 .

    正如我们在评论中所讨论的那样,即使在尝试上述方法之后,您也遇到了 UIPageViewController 导航中断您的公告的问题 . 转换完成后发布 UIAccessibilityPageScrolledNotification 非常重要 . 用于交换页面的 UIPageViewController 方法 setViewControllers:direction:animated:completion: 接受完成块 . 通过从完成块内而不是在下一行中发布页面滚动通知,可以避免中断 .

相关问题