在主屏幕上,当您用三根手指滑动以浏览主屏幕页面时,请注意焦点应用程序在滑动时失去焦点,页面更改,VoiceOver宣布新页码,然后强制关注第一个应用程序在那个页面上。有一段时间没有任何焦点。我的应用程序中有一个类似的界面,我需要做同样的事情。
现在我发布一个公告来说明页码,然后我以编程方式更改页面,但是此公告没有机会完成,之后VoiceOver会自动将一个元素集中在新页面上然后它宣布标签。我的公告被打断了。
如何在UIPageViewController
切换页面时阻止VoiceOver自动聚焦元素,或以其他方式获得所需的行为?
编辑:我看到你应该在页面发生变化时发布UIAccessibilityPageScrolledNotification
,你可以提供一个字符串作为VoiceOver宣布陈述新页面位置的参数。但是,没有办法知道这个通知什么时候结束我不相信,所以一旦完成发言,我就不能强调焦点。
答案 0 :(得分:3)
如果要提供自定义滚动状态通知,请实施-accessibilityScrollStatusForScrollView:
以向辅助功能客户端提供滚动状态字符串。如果覆盖-accessibilityScroll:
,则发布UIAccessibilityPageScrolledNotification
。
如果您想对通知进行排序,请注册UIAccessibilityAnnouncementDidFinishNotification
并在通知处理程序中发布您的屏幕更改通知。请注意通知字典中也存在UIAccessibilityAnnouncementKeyWasSuccessful
键。
正如我们在评论中所讨论的那样,即使在尝试使用上述方法后,您仍遇到UIPageViewController
导航中断您的公告的问题。在转换完成后发布UIAccessibilityPageScrolledNotification
非常重要。用于交换页面的UIPageViewController
方法setViewControllers:direction:animated:completion:
接受完成块。通过从完成块中而不是在下一行中发布页面滚动通知,可以避免中断。