私はまだiOSにかなり慣れていますが、以下のコードはうまくいくようです。バックグラウンドで行う作業がたくさんあるので、作業が完了している間、「ビジー インジケーター」がユーザーに表示されるはずです。しかし、ビジー インジケータが数秒間表示されません。ほとんどの作業 (すべてではない) が完了したときにのみ表示されます。
- (void) fetchDataTest {
// next line will create and display a busy indicator
__block MRProgressOverlayView *overlay = [MRProgressOverlayView showOverlayAddedTo:self.view title:@"Loading…" mode:MRProgressOverlayViewModeIndeterminate animated:YES];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^(void) {
[self fetchData];
dispatch_async(dispatch_get_main_queue(), ^(void) {
[overlay hide:YES];
});
});
}
実行速度が非常に遅いログ (上には表示されていません) がたくさんありますが、出力ログ (スレッド ID を含む) を見て、オーバーレイが作成され、バックグラウンド作業が開始されていることを確認できますが、デバイスにオーバーレイが数秒間表示されません。
オーバーレイをすぐに表示するにはどうすればよいですか?