主线程中的重处理之前的VoiceOver



我想实现以下效果:

  • 用户按下按钮
  • VoiceOver大声说出一个"处理"句子
  • 正在执行一些繁重的处理

所有的东西都在主线程中运行,我不希望GUI在那个时候能够更新。为此,我希望该方法在重处理结束之前不要返回。我有以下代码:

UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification,
    @"Processing");
heavyProcessing();

问题是,VoiceOver在完成大量处理后会说出信息。

在方法完成并将控制返回到主循环之前,如何使VoiceOver"异步"说出信息?如果必要,可以在另一个线程中运行繁重的处理。

这是因为,如果主线程正在进行繁重的处理,它就不能做任何其他事情,这将包括启动语音请求。

事实上,主线程上发生了很多事情,这意味着你永远不想对它进行长时间的处理。例如,你的应用程序无法响应操作系统的通知,比如内存不足警告。如果是这样的话,iOS可能会在你的应用程序挂起时杀死它。

你需要做的是在后台线程上运行你的重处理——我建议使用NSOperationQueue——并禁用你不想在它发生时工作的控件。

最新更新