2014-12-03 121 views
8

在iOS 8之前,媒体播放器在任何时候从UIWebView转到全屏时都会发送UIMoviePlayerControllerDidEnterFullscreenNotification通知。在iOS 8中,这种情况不会发生,有些人建议您改用AVPlayerItemBecameCurrentNotification通知。这似乎不是从WKWebView发送的。监听UIWindowDidBecomeVisibleNotification通知不起作用,因为它是为所有添加的窗口(包括广告网络等事物)而被解雇的WKWebView媒体播放器全屏检测

底线,我一直在研究这一整夜,我似乎无法弄清楚如何确定是否用WKWebView全屏打开视频。任何帮助,将不胜感激。

编辑:为了确认,我创建了一个空白项目。添加了一个UIWebView和AVPlayerItemBecameCurrentNotification监听器,它在我播放视频时触发,并且全屏显示。我将该UIWebView切换到WKWebView,并且该通知不再被触发。

+0

我能找到的是'UIWindowDidBecomeKeyNotification'确定何时另一个窗口接手最好的作品。幸运的是,这并没有在我的横幅广告创建时触发。然后我设置一个'windowBecameKey'变量并在'UIWindowDidBecomeHiddenNotification'上测试它。我看到的唯一的打嗝可能会使这个有点脆弱的是,UIWindowDidBecomeKeyNotification在全屏窗口隐藏之前再次触发。如果出于某种原因,事后发生,它可能会破坏事情。 – 2014-12-11 17:42:45

回答

4

这种解决方法似乎在iOS8上& iPhone 6

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    ... 

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(windowBecameHidden:) name:UIWindowDidBecomeHiddenNotification object:nil]; 

    return TRUE; 
} 

- (void)windowBecameHidden:(NSNotification *)notification { 

    UIWindow *window = notification.object; 

    if (window != self.window) { // Not my own window: assuming the video window was hidden, maybe add some more checks here. 

      // Add code here 
    } 
} 
0

我只需要做同样的事情。我听到这个回答的所有通知https://stackoverflow.com/a/7955014/1271424,发现:除了有关创建新窗口(_UIWindowContentWillRotateNotification)和MPRemote(MPRemoteCommandTargetsDidChangeNotification)的通知外,根本没有关于全屏模式的通知。

测试iPad上,8.1.1