2012-07-19 24 views
6

Tôi chỉ muốn biết liệu có thể nhận thông báo khi điều khiển phát lại hiển thị hoặc ẩn không?Thông báo khi điều khiển trình phát phim hiển thị/ẩn?

Ví dụ, tôi muốn trình bày một đoạn video với phong cách:

self.moviePlayerController.controlStyle = MPMovieControlStyleEmbedded; 

Khi video bắt đầu chơi, điều khiển phát lại được nhìn thấy và tự động biến mất. Nếu người dùng chỉ tab trên video, các điều khiển sẽ xuất hiện.

Tôi cần thông báo vì vậy tôi có thể điều chỉnh quan điểm của tôi (đặt lại vị trí một số nút bổ sung theo quan điểm MPMoviePlayerController. Là có thể? Bởi vì tiếc là tôi không tìm thấy gì trong tài liệu.

Trả lời

5

Tôi sợ rằng không có tài liệu thông báo cho những sự kiện

Bạn có thể may mắn và tìm một cái gì đó bằng cách can thiệp tất cả các thông báo đăng tải như trong các câu trả lời sau đây:.

Trapping and tracing all notifications

How to receive NSNotifications from UIWebView embedded YouTube video playback


Có tuy nhiên là một cách đơn giản là liên kết điều khiển của bạn với những người MPMoviePlayerControler 's. Bằng cách đó chắc chắn là không có giấy tờ và nó mang một nguy cơ mạnh mẽ bị từ chối khi cố gắng bán ứng dụng của bạn trên iTunes.

Trước tiên, bạn cần định vị giao diện trong phạm vi MPMoviePlayerController, cho đến ngày hôm nay được biểu thị bằng một lớp được gọi là MPInlineVideoOverlay khi sử dụng giao diện được nhúng. Một lần nữa, xin lưu ý rằng điều này mang một cơ hội lớn hoặc phá vỡ như Apple có thể quyết định bất cứ ngày nào để sử dụng một tên khác nhau.

/** 
* This quirky hack tried to locate the interface view within the supposingly opaque MPMoviePlayerController 
* view hierachy. 
* @note This has a fat chance of breaking and/or getting rejected by Apple 
* 
* @return interface view reference or nil if none was found 
*/ 
- (UIView *)interfaceViewWithPlayer:(MPMoviePlayerController *)player 
{ 
    for (UIView *views in [player.view subviews]) 
    { 
     for (UIView *subViews in [views subviews]) 
     { 
      for (UIView *controlView in [subViews subviews]) 
      { 
       if ([controlView isKindOfClass:NSClassFromString(@"MPInlineVideoOverlay")]) 
       { 
        return controlView; 
       } 
      } 
     } 
    } 
    return nil; 
} 

Nếu trở về một cái nhìn đúng đắn, bạn chỉ cần thêm bổ sung của riêng bạn để giao diện trên để của nó bằng cách sử UIView addSubview: Một khi bạn đã làm điều đó, điều khiển của bạn sẽ là một phần của giao diện của người chơi, hiển thị và ẩn ngay cùng với nó (cũng tôn trọng mọi hoạt ảnh, v.v.).

+1

Sidenote giải thích rằng rủi ro từ chối được đề cập: Tôi đã sử dụng bản hack chính xác này trong một bản phát hành ứng dụng chính và nó đã trải qua không bị phát hiện .... – Till

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