アプリが特定の画面を読み込んでいるときに、アクティビティ ホイールで「読み込み中...」ビューを表示するコードがあります。読み込みに特に長い時間がかかる場合 (たとえば 4 秒以上) は、「申し訳ありませんが、時間がかかりすぎて申し訳ありません。しばらくお待ちください!」などの追加メッセージを表示したいと思います。私がこれを行っている方法は、待機ビューを作成するメソッドを呼び出す 4 秒の遅延で NSTimer を使用し、単語が重ならないようにこの新しいビューを読み込みビューにオーバーレイすることです。ページが 4 秒未満で読み込まれると、読み込み中のビューが非表示になり、待機中のビューがトリガーされることはなく、ユーザーは思いのままに進んでいきます。
4 秒以上かかる画面読み込みをテストすると、追加のビューを表示できないようです。これが私のコードです:
// this method is triggered elsewhere in my code
// right before the code to start loading a screen
- (void)showActivityViewer
{
tooLong = YES;
waitTimer = [NSTimer scheduledTimerWithTimeInterval:4.0
target:self
selector:@selector(createWaitAlert)
userInfo:nil
repeats:NO];
[[NSRunLoop currentRunLoop] addTimer: waitTimer forMode: NSDefaultRunLoopMode];
loadingView = [LoadingView createLoadingView:self.view.bounds.size.width :self.view.bounds.size.height];
[self.view addSubview: loadingView];
// this next line animates the activity wheel which is a subview of loadingView
[[[loadingView subviews] objectAtIndex:0] startAnimating];
}
- (void)createWaitAlert
{
[waitTimer invalidate];
if (tooLong)
{
UIView *waitView = [LoadingView createWaitView:self.view.bounds.size.width :self.view.bounds.size.height];
[self.view addSubview:waitView];
}
}
// this method gets triggered elsewhere in my code
// when the screen has finished loading and is ready to display
- (void)hideActivityViewer
{
tooLong = NO;
[[[loadingView subviews] objectAtIndex:0] stopAnimating];
[loadingView removeFromSuperview];
loadingView = nil;
}