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