MPMoviePlayerControllerではまったことのメモ
こんにちは、プログラマのLFです。
iPhoneアプリを作成しているのですが
MPMoviePlayerControllerで少しはまったので
その経緯をメモしておきます。
MPMoviePlayerControllerを使用して映像を再生する際に
フルスクリーン表示にすると読み込み中のまま反応がなくなるという現象に遭遇しました。
結論から言ってしまうと
viewWillDisappearにMPMoviePlayerControllerのインスタンスを削除する処理を入れていて
フルスクリーン表示した際にその処理が実行されて
プレイヤーが削除されているのに再生しようとしている状態になり
反応がなくなっていました。
MPMoviePlayerControllerでフルスクリーン表示にすると
モーダルでViewが追加されるため
viewWillDisappearなどのライフサイクル系の処理が再度呼ばれていたために
起こった現象でした。
ライフサイクル、奥深い。
いや、私が知らなかっただけですけど…恥ずかしい。
対処法として、
viewWillDisappear内にif文を入れて遷移元の判定を行うようにしました。
このケースの場合は
1 2 3 4 |
//消えようとしている理由が親のViewControllerから削除されたかどうか if (self.isMovingFromParentViewController) { //ここに処理を書く } |
で対応できました。
またviewDidAppearに再生処理も入れていたので
そちらも
1 2 3 4 |
///表示されようとしている理由が別のViewControllerから表示されたかどうか if (self.isBeingPresented) { //ここに処理を書く } |
と判定処理を入れることで対応しました。
もし同じようなことで悩まれている方がいらっしゃったら
参考になればうれしいです。
参考にしたサイト:
UIViewControllerまとめ