我想完成以下效果:
一切都在主线程中运行,我不希望GUI能够在那段时间内更新。为此,我希望方法不要在重处理结束之前返回。我有以下代码:
UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification,
@"Processing");
heavyProcessing();
问题是,VoiceOver在重度处理完成后会说出信息。
如何让VoiceOver在方法完成并将控制返回主循环之前“异步”说出信息?如有必要,可以在另一个线程中运行繁重的处理。
答案 0 :(得分:4)
那是因为,如果主线程正在进行繁重的处理,它就无法做任何其他事情,包括发起语音请求。
事实上,主线程上发生了很多事情,这意味着你永远不想对它进行冗长的处理。例如,您的应用无法响应来自操作系统的通知,例如内存不足警告。如果是这种情况,iOS可能会认为它已经挂起了你的应用程序。
你需要做的是在后台线程上运行繁重的处理 - 我建议使用NSOperationQueue - 并禁用你不想在它发生时工作的控件。