私はこの問題を解決しようと精神的に近づいています:
状況:
私はかなり基本的なアプリケーション、アイテムが押されたときに uitabbarcontroller にリンクする tableview を持つ MMDrawerController を持っています。その最初のページ内には、埋め込まれた youtube UIWebView があり、これを押すと youtube ビデオフルスクリーンが再生されます。
これが何が起こっているかです。
- ビデオを押すと、フルスクリーンで開き、再生が始まります
- UITabBar viewWillDisappear が発生する
- ルート MMDrawerController viewWillAppear が起動する
- ビデオ終了
- ユーザーが開始した UITabBar に戻り、以前に「消えた」にもかかわらず、すべてが正常に見える
ここで、2 つのビューの ViewWillAppears / Disappears にブール値を入力して、アプリの現在の状態を確認します。通常、テーブルが開いているか、uitabbarcontroller が開いていることを示す 0,1 です。ビデオの後に、0,0 が表示されます。ナビゲーションを押し戻すと、どこからでもナビゲートするときに「外観の遷移を開始/終了するためのアンバランスな呼び出し」が表示されます。
今、YouTubeビデオの開始を聞いてから発砲すると:
[self.navigationController popToRootViewControllerAnimated:NO];
アンバランスな通話が発生するのを防ぐことができ、ユーザーは引き続きアプリを操作できます。しかし、彼らはビデオを見ることができず、ただ見返されるだけです。
3. と同様に、2 つのコントローラーで 0, 0 を確認してから、アプリ全体をほぼ再起動できます。しかし、それは良い解決策ではありません。
意図した結果:
ユーザーは uiwebview を押してビデオを見ることができ、その後中断したところに戻ります。彼らがナビゲーションコントローラーに反撃した場合、バランスの取れていない外観遷移はありません。
私はたくさんのものを試しました
[self.navigationController poptoViewController:...]
この時点で収集したことから、ルートコントローラーにロードされているフルスクリーンビデオと関係があります (したがって、viewWillAppear は 3 で起動します)。しかし、後で正しく「配置」されません。何かのようなもの
[self.navigationController heyTheUserIsPresentlyIn:self]
ビデオが消えた後に電話できるのは、非常に良いことです。
私は何時間もこれに取り組んできましたが、どんな支援も大歓迎です.私がバカなら、ドキュメントや本のセクションへのリンクが大いに役立ちます. ありがとう。