2014-11-25 17 views
5

Tôi đang sử dụng UIWebView trong ứng dụng iOS để phát video YouTube nhưng để cung cấp trải nghiệm gốc, tôi đã triển khai các điều khiển phát lại bằng UIKit. Vì vậy, UIWebView chỉ được sử dụng để hiển thị video.Cách ngăn chặn UIWebView video khỏi các sự kiện điều khiển từ xa

Tôi cũng đã triển khai -remoteControlReceivedWithEvent: để cho phép điều khiển từ Trung tâm điều khiển và nút điều khiển trên tai nghe. Nhưng có vẻ như UIWebView tự động xử lý các sự kiện điều khiển từ xa từ tai nghe. Đây là một vấn đề bởi vì khi bạn chuyển đổi chơi/tạm dừng, mã của tôi sẽ tạm dừng video và sau đó UIWebView sẽ chuyển đổi nó một lần nữa để phát video.

Có cách nào để ngăn điều này xảy ra không?

Sự cố liên quan là UIWebView cố gắng đặt thông tin "Hiện đang phát" thành MPNowPlayingInfoCenter cũng được thực hiện bởi mã của tôi.

Trả lời

0

Tôi gặp phải câu hỏi này trong khi cố giải quyết vấn đề ngược lại: Tôi thêm UIWebView vào ứng dụng và sự kiện điều khiển từ xa không hoạt động khi chế độ xem UIWeb được hiển thị nhưng hoạt động ở nơi khác trong ứng dụng. Trong trường hợp của tôi là giải pháp là để thêm những 3 phương pháp, trong đó có mặt trên tất cả các bộ điều khiển xem khác trong ứng dụng của tôi, với bộ điều khiển của UIWebView mới của tôi:

- (void) viewDidAppear:(BOOL)animated { 
    [self becomeFirstResponder]; 
} 

- (void)viewWillDisappear:(BOOL)animated { 
    [super viewWillDisappear:animated]; 
    [self resignFirstResponder]; 
} 

-(void)remoteControlReceivedWithEvent:(UIEvent *)event { 
    // Logic to handle remote control events 
} 

Từ đó, tôi nghi ngờ rằng bạn có thể ngăn bạn UIWebView từ xử lý các sự kiện điều khiển từ xa bằng cách thực hiện một trong hai điều: 1. Bao gồm logic trong remoteControlReceivedWithEvent để bỏ qua các sự kiện điều khiển từ xa bạn không muốn xử lý. 2. Yêu cầu UIWebView của bạn từ chức là người trả lời đầu tiên bằng cách gọi resignFirstResponder trong phương thức viewDidAppear của bộ điều khiển.

3

tôi gặp phải cùng một loại vấn đề với ứng dụng của tôi mà phát lại âm thanh sử dụng AVAudioPlayer. Ứng dụng này hiển thị thông tin âm thanh hiện tại trong MPNowPlayingInfoCenter trong khi phát lại. Yêu cầu của tôi là để hiển thị một quảng cáo html5 video (với âm thanh) bên trong một webview trên máy nghe nhạc của tôi hàng đầu.

Lần đầu tiên tôi chỉ sử dụng UIWebView vì tôi cần hỗ trợ iOS7 nhưng gặp nhiều sự cố, một trong số đó là MPNowPlayingInfoCenter hiển thị url của video quảng cáo thay cho phát lại âm thanh gốc hiện tại. Tôi đã thử nhiều giải pháp như phương pháp swizzling trên UIWebView mà không cần bất kỳ sự thành công.

Tôi chỉ tìm thấy một giải pháp phù hợp với mình: sử dụng WKWebView theo mặc định thay vì UIWebView vùng chứa web. video HTML5 sẽ không tương tác nữa với MPNowPlayingInfoCenter, tôi đã phải hỗ trợ cũng iOS7 vì vậy tôi tạo ra một lớp wrapper để chuyển đổi giữa UIWebView (với vẫn là vấn đề) trên iOS7 và WKWebView từ iOS8 và nhiều hơn nữa.

Hy vọng điều này sẽ hữu ích.

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