2014-12-03 17 views
8

Prima di iOS 8, la notifica UIMoviePlayerControllerDidEnterFullscreenNotification è stata inviata ogni volta che un lettore multimediale è andato a schermo intero da un UIWebView. In iOS 8, ciò non accade e alcuni hanno suggerito di ascoltare la notifica AVPlayerItemBecameCurrentNotification. Questo non sembra essere inviato da WKWebView. L'ascolto della notifica UIWindowDidBecomeVisibleNotification non funziona perché è attivato per tutte le finestre aggiunte (incluse le reti pubblicitarie)WKWebView Media Player rilevamento schermo intero

In conclusione, ci ho lavorato tutta la notte e non riesco a capire come determinare se un video è stato aperto a schermo intero con un WKWebView. Qualsiasi aiuto sarebbe apprezzato.

Modifica: per confermare, ho creato un progetto vuoto. Aggiunto un UIWebView e il listener AVPlayerItemBecameCurrentNotification ad esso e si è attivato quando ho riprodotto un video ed è entrato a pieno schermo. Ho cambiato UIWebView in WKWebView e questa notifica non è più stata attivata.

+0

Il migliore che ho trovato è stato il 'UIWindowDidBecomeKeyNotification' per determinare quando un altro finestra prese il sopravvento. Questo, per fortuna, non ha funzionato quando è stato creato il mio banner pubblicitario. Quindi ho impostato una variabile 'windowBecameKey' e l'ho testata su' UIWindowDidBecomeHiddenNotification'. L'unico singhiozzo che ho visto potrebbe rendere un po 'fragile questo dato che "UIWindowDidBecomeKeyNotification" si attiva nuovamente appena prima che la finestra a schermo intero si nasconda. Se, per qualche ragione, spara in seguito, probabilmente romperà le cose. –

risposta

4

Questa soluzione sembra funzionare su iOS 8 & 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

Ho solo bisogno di fare lo stesso. Ho ascoltato tutte le notifiche con questa risposta https://stackoverflow.com/a/7955014/1271424 e trovato: non ci sono notifiche sulla modalità a schermo intero, tranne le notifiche sulla creazione di una nuova finestra (_UIWindowContentWillRotateNotification) e su MPRemote (MPRemoteCommandTargetsDidChangeNotification).

Testato su iPad, 8.1.1