Domanda

Sto cercando di aggiungere pulsanti personalizzati a sinistra ea destra delle / gioco / comandi avanzati standard di riavvolgimento in una vista MPMoviePlayerController (OS 2.x in su). Ho capito come aggiungerli alla finestra del lettore, ma sono sempre visibili. C'è un modo per rilevare quando appaiono i controlli standard e scomparire?

È stato utile?

Soluzione

Ok, capito, fare in questo modo:

BOOL controlsVisible = NO;
for(id views in [[_moviePlayer view] subviews]){
 for(id subViews in [views subviews]){
   for (id controlView in [subViews subviews]){
     controlsVisible = ([controlView alpha] <= 0.0) ? (NO) : (YES);
   }
  }
}
NSLog(@"player controls are visible: %d", controlsVisible);

Dove _movePlayer è l'istanza del lettore. Nel ciclo profondo, il MPFullScreenVideoOverlay istanza vista avrà alfa == 0.0 se sono nascosti i controlli, o alfa 1.0 se vengono visualizzate controlli. È possibile aggiungere un osservatore e fuoco le cose, se necessario. So che non è elegante, ma funziona per me, in quanto Apple non ha documentato nulla per quanto riguarda questo compito.

Saluti ...

Altri suggerimenti

La risposta di cybercow è giusto basta aggiungere piccole modifiche per rendere la risposta più precisa.

BOOL controlsVisible = NO;
for(id views in [[self.moviePlayerViewController view] subviews])
{
   for(id subViews in [views subviews])
   {
      for (id controlView in [subViews subviews])
      {
          if ([controlView isKindOfClass:[UIView class]] && ((UIView*)controlView).tag == 1004)
          {
             controlsVisible = ([controlView alpha] <= 0.0) ? (NO) : (YES)               
          }
      }

   }
}

ho cambiato l'anello più interno. In realtà 1004 è il tag di MPMoviePlayer controlli in modo da funzionare in modo più accurato.

Esaminare la proprietà movieControlMode. È possibile impostare il MPMovieControlMode

Opzioni MPMovieControlMode per la visualizzazione di controlli di riproduzione di film.

typedef enum {
   MPMovieControlModeDefault,
   MPMovieControlModeVolumeOnly,
   MPMovieControlModeHidden
} 

MPMovieControlMode;

È anche possibile controllare MPMoviePlayerScalingModeDidChangeNotification

pre iOS3.2
da rilevare "disapierance" è facile:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinishedCallback:) name:MPMoviePlayerPlaybackDidFinishNotification object:moviePlayerController];

per rilevare appierance è po 'più difficile (forse c'è modo migliore):

...
[moviePlayerController play];
mainTimer = [NSTimer scheduledTimerWithTimeInterval:1/100 target:self selector:@selector(tick) userInfo:nil repeats:YES];

- (void)tick {
  if( [[[UIApplication sharedApplication] windows] count] < 2 ) return;

  moviePlayerWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
  if( moviePlayerWindow ){
    [mainTimer invalidate], mainTimer=nil;
    // here you have moviePlayerWindow
  }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top