2014-12-03 13 views
8

Trước iOS 8, thông báo UIMoviePlayerControllerDidEnterFullscreenNotification được gửi bất kỳ lúc nào trình phát đa phương tiện chuyển sang chế độ toàn màn hình từ UIWebView. Trong iOS 8, điều này không xảy ra và một số đã gợi ý để nghe thông báo AVPlayerItemBecameCurrentNotification thay thế. Điều này dường như không được gửi từ WKWebView. Lắng nghe thông báo UIWindowDidBecomeVisibleNotification không hoạt động vì nó được kích hoạt cho tất cả các cửa sổ được thêm vào (bao gồm những thứ như mạng quảng cáo)WKWebView Media Player phát hiện toàn màn hình

Tóm lại, tôi đã làm việc suốt đêm này và dường như tôi không thể tìm ra cách xác định xem video đã được mở ở chế độ toàn màn hình với WKWebView hay chưa. Bất kỳ trợ giúp sẽ được đánh giá cao.

Chỉnh sửa: Để xác nhận, tôi đã tạo một dự án trống. Đã thêm một UIWebView và trình nghe AVPlayerItemBecameCurrentNotification vào nó và nó được kích hoạt khi tôi phát video và nó đã được nhập toàn màn hình. Tôi đã chuyển UIWebView đó thành WKWebView và thông báo đó không còn được kích hoạt nữa.

+0

Điều tốt nhất tôi có thể tìm thấy là 'UIWindowDidBecomeKeyNotification' để xác định khi một cửa sổ khác đã tiếp quản. Điều này, may mắn thay, không kích hoạt khi quảng cáo biểu ngữ của tôi được tạo. Sau đó tôi đặt một biến 'windowBecameKey' và thử nghiệm nó trên' UIWindowDidBecomeHiddenNotification'. Cái nấc cụt duy nhất tôi thấy có thể làm cho điều này trở nên yếu ớt một chút là 'UIWindowDidBecomeKeyNotification' lại kích hoạt ngay trước khi cửa sổ toàn màn hình ẩn đi. Nếu, vì lý do nào đó, nó cháy sau đó, nó có thể sẽ phá vỡ mọi thứ. –

Trả lời

4

workaround này dường như làm việc trên 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

Tôi chỉ cần thực hiện tương tự. Tôi đã nghe tất cả các thông báo với câu trả lời này https://stackoverflow.com/a/7955014/1271424 và thấy: không có thông báo nào về chế độ toàn màn hình, ngoại trừ thông báo về việc tạo cửa sổ mới (_UIWindowContentWillRotateNotification) và về MPRemote (MPRemoteCommandTargetsDidChangeNotification).

Thử nghiệm trên iPad, 8.1.1

Các vấn đề liên quan