2017-11-11 11 views
2

iPad上で4本指のタスクスイッチジェスチャーを使用して離れたところから戻ったときに、アプリがクラッシュしています。ユーザーが自分のアプリから離れて切り替えるように4本指のジェスチャーをしios 11のタスクを切り替える際の偽の回転イベント

、私は、その後、私のトップレベルのビューコントローラがでviewWillTransitionToSize:withTransitionCoordinator:を取得します(私たちは縦向きに、現在していると仮定して)私のアプリデリゲートに続いapplicationDidEnterBackground:applicationWillResignActive:見ます横向きのレイアウトを示すサイズ(デバイスが回転していなくても)。これは、もちろん、新しいオリエンテーションのために多くのサイズ変更と再配置をもたらします。その直後、私はviewWillTransitionToSize:withTransitionCoordinator:のサイズ(ポートレートを示すサイズ)を取得します(デバイスの元の向き)。そしてまた、新しい(実際にはオリジナルの)オリエンテーションのために、私はすべてのレイアウトをもう一度見直します。

私が見ていることは、このすべてが完了するのを待っていると、1日中いつでもアプリ内外に切り替えることができるということです。一方、この不必要な作業が進行している間に私のアプリケーションに切り替えると、いくつかのiOS移行コードで深刻なクラッシュが発生します。

この時点で、なぜこのような迷惑な回転イベントが発生するのかを理解しようとしています。私がそれらを得ることを避けることができれば、私はクラッシュを引き起こしているどんな状況にも入ることを避けることができます。彼らは必要ないと思われる。

+1

これを指摘してくれてありがとう。最初は私はそれを再現できないと思っていましたが、私はそれを再現できるだけでなく、実際にApp Storeの私のアプリはそれのためにクラッシュレポートでいっぱいでした! – matt

+0

私は、アプリがマルチタスキング状況にあるときにユーザーがホームボタンをクリックすると、これが起こる別の状況を発見しました。アプリがバックグラウンド状態にある間、もう一度、2つの 'viewWillTransitionToSize'が素早く連続しています。 – matt

+0

私はこれがこれをやっている理由は、実行中のアプリケーションのリストにサムネイルを表示できるように、アプリケーションを横長と縦長の両方でスナップショットできることだと考えています。バックグラウンドで発生する向きの変更を回避するためのコードを用意して、アプリを横向きに終了し、縦向きに回転して、ホームをダブルクリックして実行中のアプリを表示します。あなたのスクリーンショットは間違っているでしょう。私は本当にこれを修正すると思いますが、アニメーションの重複に関連したiOSのバグを引き起こす回転/レイアウトコードで何が起きているのか把握する必要があります。その間、アプリがアクティブになるまでレイアウトを遅らせています。 – Craig

答えて

0

回転イベントがアプリに報告されないようにする方法はありません。私はそれがiOSのバグだと思う。ただし、アプリケーションの状態がUIApplicationStateBackgroundの場合はviewWillTransitionToSize:withTransitionCoordinator:を無視し、ビューのlayoutSubviews(存在する場合)で同じ処理を行うと、問題を回避できます。

1

私はあなたががバックグラウンドである場合は、これだけ出てバウンス、バックグラウンドでviewWillTransitionToSizeを取得するのに便利か正しいだろう理由を考えることはできません。それでも

if UIApplication.shared.applicationState == .background { 
    return 
} 

、これは感じていますバグのように、私の意見ではあなたはAppleにそれを報告すべきです。

+0

別の言い方をすると、 'layoutSubviews'を実装すると、それが呼び出されるかどうかは' viewWillTransitionToSize'を実装するかどうかとは関係ありません。しかし、それはあなたが尋ねたことではありません。 – matt

+0

コメントを削除できますか?それはよりきれいになるでしょう。 – matt

+0

私が提案したとおり、あなたのコメントもすべて削除してください。あなたの答えは立っています。コメントは一過性です。私たちはそれらを使って進める方法を議論しました。今議論が終わった。 – matt

関連する問題