可访问性通知被覆盖

时间:2014-08-17 12:21:44

标签: ios ipad accessibility uiaccessibility

我正在开发具有辅助功能支持的iOS应用程序。在我的应用程序流程中的某个时刻,我提供了一个警报视图。在呈现视图之后,我想使用UIAccessibilityPostNotification关注视图,但是通知似乎被覆盖了。

[alertView show];
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification,alertView.somesubView);

但是,我没有看到此通知的效果。可访问性焦点转到后台的其他视图对象。

然而,当我使用dispatch_after时有0延迟,它可以正常工作

[alertView show];
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW,0 * NSEC_PER_SEC);
dispatch_after(delay,dispatch_get_main_queue(), ^void(){
  UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification,alertView.somesubView);
  });

有人能解释一下是什么原因吗?

1 个答案:

答案 0 :(得分:0)

你偶然发现了标准解决方案。用户界面或可访问性层次结构可能尚未更新,但反映了警报视图的存在。对主队列的异步调度可确保在发布通知之前执行所有其他排队任务,包括对用户界面或可访问性状态的任何更新。

也就是说,VoiceOver应该自动关注警报视图。您可能想要首先调查干扰此行为的内容。