2012-10-31 3 views
3
나는 영화가 완료되면 동영상 플레이어 컨트롤을 보여주고 싶은, 그래서 NSNotificationCenter에 옵저버를 추가

:쇼 컨트롤

- (void)movieFinishedCallback:(NSNotification*)aNotification 
{ 
    // Obtain the reason why the movie playback finished 
    NSNumber *finishReason = [[aNotification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey]; 

    if ([finishReason intValue] == 0) 
    { 
     [self showControls]; 
    } 

    // Handle other reasons 
} 


- (void)showControls 
{ 
    for(id views in [[[self.playerVC moviePlayer] view] subviews]){ 
     for(id subViews in [views subviews]){ 
      for (id controlView in [subViews subviews]){ 
       [controlView setAlpha:1.0]; 
       [controlView setHidden:NO]; 
      } 
     } 
    } 
} 

을 이제 모든 일이 잘 작동 및 제어 될 때까지 등장했지만 화면을 터치하여 컨트롤을 숨기면 컨트롤이 사라지고 빠르게 다시 표시됩니다 (플래시와 같은). 그런 다음 컨트롤을 숨기려면보기를 다시 탭해야합니다.

아무도 모릅니다 왜이 문제가 생겼습니까? 또는 비디오가 끝나면 컨트롤을 표시하는 또 다른 아이디어가 있습니까?

답변

0

먼저 MPMoviePlayerView의 하위보기를 디버그하고 인쇄하고 하위보기를 기록하고 컨트롤보기의 이름을 찾습니다.

이것은 내 응용 프로그램에있는 디버깅입니다.

Printing description of subViews: 
 
<MPVideoContainerView: 0x7f936950f6e0; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x7f936950fa30>> 
 
Printing description of controlView: 
 
<MPVideoPlaybackOverlayView: 0x7f9369659a70; frame = (0 0; 375 667); alpha = 0; hidden = YES; autoresize = W+H; tag = 1004; layer = <CALayer: 0x7f93696c4710>> 
 
Printing description of subViews: 
 
<MPVideoContainerView: 0x7f936950f6e0; frame = (0 0; 375 667); autoresize = W+H; layer = <CALayer: 0x7f936950fa30>> 
 
Printing description of views: 
 
<MPSwipableView: 0x7f9369510290; frame = (0 0; 375 667); autoresize = W+H; gestureRecognizers = <NSArray: 0x7f9369510d30>; layer = <CALayer: 0x7f9369510620>>

그때는 단지 제어 뷰의 이름을 확인하고, 플레이어를 형성 제거. 그것을 숨김으로 설정하십시오.

- (void)hideControls 
 
{ 
 
    for(id views in [[player view] subviews]){ 
 
     for(id subViews in [views subviews]){ 
 
      for (id controlView in [subViews subviews]){ 
 
       if ([controlView isKindOfClass:NSClassFromString(@"MPVideoPlaybackOverlayView")]) { 
 
        [controlView setAlpha:0.0]; 
 
        [controlView setHidden:YES]; 
 
       } 
 
      } 
 
     } 
 
    } 
 
}