2012-07-19 15 views
6

재생 컨트롤이 보이거나 숨겨 졌을 때 알림을받을 수 있는지 알고 싶습니다.동영상 플레이어 컨트롤을 표시하거나 숨길 때의 알림?

예를 들어, 나는 스타일로 비디오를 제공 할 : 비디오가 재생을 시작하면

self.moviePlayerController.controlStyle = MPMovieControlStyleEmbedded; 

은 재생 컨트롤이 표시 얻고 자동으로 사라집니다. 사용자가 비디오 탭을 누르면 컨트롤이 나타납니다. 내가 (내보기를 조정 MPMoviePlayerController 뷰 아래에 몇 가지 추가 버튼의 위치를 ​​변경 할 수 있습니다

나는 통지를해야합니다. 불행하게도 나는이 문서에서 아무것도 찾을 수 없기 때문에 은? 가능성이있다.

답변

5

내가 문서화가 없다는 것을 두려워 해당 이벤트에 대한 알림

당신은 운이 다음과 같은 답변에 모든 게시 된 알림을 스니핑으로 뭔가를 찾을 수 있습니다

:.

Trapping and tracing all notifications

을 617,451,515,

How to receive NSNotifications from UIWebView embedded YouTube video playback


그러나 단순히 MPMoviePlayerControler 년대의 그와 컨트롤을 연결하는 방법이있다. 그 방법은 분명히 문서화되어 있지 않으며 iTunes에서 앱을 판매하려고 할 때 거부 당할 위험이 큽니다.

우선 인터페이스보기를 이라는 인터페이스가 내장 된 인터페이스를 사용할 때 MPMoviePlayerController까지 찾아야합니다. 다시 한 번 말하지만, Apple이 다른 이름을 사용하기로 결정할 때 큰 문제가 될 수 있습니다. 적절한보기, 당신은 단지에 당신이 당신의 컨트롤이 표시된 플레이어의 인터페이스의 일부가 될 것이라고했다 일단이 UIView addSubview: 의 사용에 인터페이스에 자신의 추가를 추가하고 바로 함께 숨겨진 반환하는 경우

/** 
* 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; 
} 

그것 (또한 모든 애니메이션 등을 준수).

+1

언급 된 거부 위험을 설명하는 Sidenote : 주요 앱 릴리스에서이 정확한 해킹을 사용했으나 감지되지 않았습니다. – Till

관련 문제