2

アプリがバックグラウンドで中断されたときに、現在の画面コンテンツのスクリーンショットを撮るという Apple の実装を防止しようとしています。私はそのようなコードを見つけましたが、それには問題があります。それが行うことは、画面上のキーウィンドウをクリアすることです。そのため、スナップショットが取得されると、空白の画面になります。これは、機能のコード スニペットです。

- (void)applicationWillResignActive:(UIApplication *)application
{
    [ UIApplication sharedApplication ].keyWindow.hidden = YES;
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    [ UIApplication sharedApplication ].keyWindow.hidden = YES;
}

上記のコードの問題は、アプリがフォアグラウンドに戻ると、ビューが非表示になり、単純な方法で再表示できないため、ビューが消えてしまうことです

[ UIApplication sharedApplication ].keyWindow.hidden = NO;

アプリ デリゲートの applicationWillEnterForeground メソッドで。バックグラウンドメソッドで非表示にした後、非表示のビューを取り戻す方法を知っている人はいますか? 現在、ビューが非表示になっているため、黒い画面になっています。キーウィンドウを非表示にしてからバックグラウンドに移動してから戻ると、正確にはどうなりますか。キーウィンドウではなくなる前に隠したキーウィンドウですか?誰かが私を正しい方向に向けることができますか?

ありがとう

4

1 に答える 1

3

デモプロジェクトを作成したところ、問題を再現できました。実際、keyWindowアプリケーションのプロパティはnilいつapplicationWillEnterForeground:呼び出されるかです。

多くの場合、アプリケーションのデリゲートはそのウィンドウへの参照を持っています。これは通常、多くのアプリケーションの Xcode の既定のテンプレートです。電話して問題を解決できました

self.window.hidden = NO;

の代わりに[UIApplication sharedApplication.keyWindow.hidden = NO;。ほとんどのテンプレートと同様に、アプリケーション デリゲートにはウィンドウ参照があると仮定します。

私のために働いた別の代替手段は、に電話すること[self.window makeKeyAndVisible];です。

これはすべて iOS 6 シミュレーターで行われました。

お役に立てれば!

于 2012-09-27T17:29:55.807 に答える