防止VoiceOver自动聚焦对象

时间:2015-01-01 22:28:01

标签: ios focus uipageviewcontroller voiceover uiaccessibility

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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

相关问题