2017-10-09 186 views
1

我需要能够访问WKWebView的本机AVPictureInPictureController的代理回调方法pictureInPictureControllerDidStopPictureInPicture(_:)AVPictureInPictureController没有旧的MPMoviePlayerViewController这样的全局通知事件,我无法创建我自己的AVPictureInPictureController实例以与Web视图一起使用来访问委托回调。我找不到关于如何钩入WKWebView对象的内部AVPictureInPictureController的文档。我希望至少有一些方法可以与KVO合作。为WKWebView访问AVPictureInPictureController的代理回调

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

WebKit的框架提供了WKWebView类,支持画中画iOS中9

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

回答

1

,如果你有你的AVPictureInPictureController你可以简单的任何访问设置它的代表并执行回调

class MyWebView: WKWebView { 

    self.myPictureInPictureController.delegate = self 

} 

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

我没有创建一个独立的'AVPictureInPictureController'。我依赖于'WKWebView'内部的那个。 –

+0

我试图按照你的建议进行子类化,但它仍然不能访问内部的AVPictureInPictureController。我需要利用WKWebView版本,因为我使用自定义的Javascript视频播放器加载预卷广告和视频。在AVPictureInPictureController中创建我自己的AVPlayer不会给我这种能力。 –

0

我能够发现有一个叫做PGPictureInPictureProxyPictureInPictureActiveChangedNotification的通知,当视频移动到画中画时,然后当画中画关闭时,这个通知被调用。我相信它可能会在任何时候被改变或删除,但它现在似乎正在工作。