メイン ビューとモーダル ビューを備えたキオスク アプリケーションを作成し、画像カルーセルをスクリーンセーバーとして使用しました。このモーダル ビューは、画面に触れるたびに下にスライドします。
アプリを実行したままデバイスを非常に長い時間 (一晩) 放置すると、スクリーンセーバーのモーダル アニメーションが消えたときに画面の再描画の問題が発生します。メイン画面の背景画像がどこにあるのか、OSには何も描画されていないようです。メイン画面のコントロールとテキストは本来あるべきように描画され、背景画像のみがモーダルからの非表示アニメーションのアーティファクトに置き換えられます。これは 2 つのデバイス (iPad 2 3G 16GB) で発生します。これは、アプリが長時間実行されている場合にのみ発生し、画面がオンになっているかどうかは関係ありません。問題の背景 UIImageView は、「画像」以外のプロパティが変更されていないバニラ UIImageView です。
次のようになります (クライアントのロゴと一部のテキストがぼやけています): http://tinypic.com/view.php?pic=2qx47bt&s=6
何が間違っている可能性があり、それを修正する方法はありますか?
編集:スクリーンセーバーを非表示にするコードは次のとおりです。非常に標準的で、ぼんやりしていません。
- (void)hideScreenSaver {
dispatch_async(dispatch_get_main_queue(), ^{
if (![[[self mainViewController] presentedViewController] isKindOfClass:[UINavigationController class]]) {
[[self mainViewController] dismissModalViewControllerAnimated:TRUE];
}
});
}
スクリーンセーバーViewController は - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions (メインスレッド内) で作成されます。
[[GMAppManager sharedManager] setScreenSaverViewController:[[AAScreenSaverViewController alloc] initWithNibName:@"AAScreenSaverViewController" bundle:nil]];