2017-10-09 46 views
1

デリゲートコールバックメソッドAVPictureInPictureControllerpictureInPictureControllerDidStopPictureInPicture(_:)にアクセスする必要があります。 AVPictureInPictureControllerには、以前のMPMoviePlayerViewControllerのようなグローバル通知イベントはありません。私はAVPictureInPictureControllerの独自のインスタンスを作成して、デリゲートコールバックにアクセスするためにWebビューで使用することはできません。 WKWebViewオブジェクトのこの内部AVPictureInPictureControllerにフックする方法に関するドキュメントは見つかりません。私は少なくともKVOでそれをやるための方法があると思っていた。WKWebViewのAVPictureInPictureControllerのデリゲートコールバックへのアクセス

https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/AdoptingMultitaskingOniPad/QuickStartForPictureInPicture.html

のWebKitフレームワークは、あなたのAVPictureInPictureControllerあなたは、単にすることができますへのアクセスを持っている場合のiOS 9.

https://developer.apple.com/documentation/avkit/avpictureinpicturecontrollerdelegate/1614717-pictureinpicturecontrollerdidsto

答えて

1

にピクチャインピクチャをサポートWKWebViewクラスを提供し、デリゲートを設定してコールバックを実装する

class MyWebView: WKWebView { 

    self.myPictureInPictureController.delegate = self 

} 

extension MyWebView: AVPictureInPictureControllerDelegate { 
    func pictureInPictureControllerDidStopPictureInPicture(_ pictureInPictureController: AVPictureInPictureController) { 
     //code 
    } 
} 
+0

私はスタンドアロンの 'AVPictureInPictureController'を作成していません。私は 'WKWebView'の内部にあるものに頼っています。 –

+0

あなたが提案したようにサブクラス化しようとしましたが、それでも私は内部のAVPictureInPictureControllerにアクセスできません。私はWKWebViewバージョンを利用する必要があります。なぜなら、カスタムJavascriptビデオプレーヤーを使用してプリロール広告とビデオを読み込むためです。私自身のAVPlayerをAVPictureInPictureControllerで作成しても、私にこの能力は与えません。 –

0

PGPictureInPictureProxyPictureInPictureActiveChangedNotificationという通知があり、ビデオがピクチャインピクチャに移動したときに呼び出され、ピクチャインピクチャが閉じられたときに再び呼び出されます。私はそれがいつでも変更または削除することができると確信していますが、今のところ働いているようです。

関連する問題