2015-10-07 12 views
9

に入るときに呼び出さアプリがあればアプリは、例えばiOSの9viewWillTransitionToSize:withTransitionCoordinator:アプリがバックグラウンドまたは非アクティブ

以来の背景または非アクティブになったときにメソッドが複数回呼び出されるviewWillTransitionToSize:withTransitionCoordinator:ことが表示されますiPadのポートレートでホームボタンを押すと、最初にサイズ1024x768(ランドスケープ)、次に768x1024(バックツーポートレート)のメソッド呼び出しを受け取るようになります。それはiOSがアプリのスイッチャーのスクリーンショットを取得するためにこれを行うと結論づけます。

私たちのアプリケーションロジックは画面サイズに依存し、画面サイズの変更は新しいサイズに関してモデルを更新するタスクをトリガします。ユーザーがデバイスを回転させたり、マルチタスキングモード(スプリットビュー)に入るときにこれを行う必要がありますが、ユーザーがバックグラウンドに入るときには行わないでください。

ひとつのアイデアは、UIApplicationWillResignActiveNotification通知を使用していたが、それは、通知が送信される前に、時にはviewWillTransitionToSize:withTransitionCoordinator:が呼び出されるので不可能使命であることが判明したとの通知が送信された後、それが呼び出されるothertimes:/

任意のアイデアを?

答えて

1

私は現在同じ問題があります。私はサイズが変わったときに多くの仕事をして、バックグラウンドに入るときにそれが起こることができません。 「ほとんどの」私のために働くことの1つは、アプリケーションが[uiapplication sharedApplication] applicationStateを使用してバックグラウンドにあるかどうかを確認することです。アプリケーション状態は、viewWillTransitionToSizeへの2回の追加呼び出しが行われる前にUIApplicationStateBackgroundに設定されます。これは一貫しているようです。アプリがマルチタスキングを使用してスワイプされ、その後バックグラウンドに入り、フルサイズで再びフォアグラウンドになると、いくつかの問題が発生します。この場合、どのサイズの変更を使用すべきかを決定するために、呼び出しの順番は一貫していないようです。

+0

私の現在の回避策は、0.1秒viewWillTransitionToSizeのロジックを延期し、UIApplication.sharedApplication()。applicationStateがまだアクティブであるかどうかを確認することです。それは醜いハックですが、私はそれの周りに他の方法を参照してください。 –

0

うん、同じ問題。 0.1秒を使用する代わりに、コーディネーターのtransitionDuration()を使用できます。次に、バックグラウンドの状態を確認します。

+0

残念ながら、アニメーションが完了する前に状態に興味がある場合は... –

1

viewWillTransitionToSize:withTransitionCoordinatorでは、UIViewControllerTransitionCoordinatorを使用して、いつ移行が完了したかを知ることができます。その後、アプリがバックグラウンドでないことを確認し、ロジックを実行します。

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator { 
    [coordinator animateAlongsideTransition:nil completion:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) { 

     // after transition 

     if ([UIApplication sharedApplication].applicationState != UIApplicationStateBackground) { 
      // perform logic 
     } 
    }]; 
} 
+1

電源ボタンを押すと、何度もアクティブ状態に戻ります。 – Rajneesh071

関連する問題