Sto riscontrando problemi di acquisizione quando il player di YouTube entra a pieno schermo o esce a schermo intero in iOS 8 perché queste notifiche sono state rimosse UIMoviePlayerControllerDidEnterFullscreenNotification
e UIMoviePlayerControllerWillExitFullscreenNotification
per questa versione SO versione.Forza o abilita correttamente la modalità orizzontale per Youtube video incorporato in iOS 8 senza NSNotificationCenter
Poiché il mio progetto di app è impostato per essere solo in modalità verticale, il video non ruoterà in modalità orizzontale quando è in riproduzione, il che non è molto facile da usare quando si guarda un video sul dispositivo.
Di solito l'utente vorrebbe guardare il video in modalità verticale o orizzontale quando il video entra a pieno schermo.
questi è il modo in cui mi facevo per iOS 7 che è stato perfetto funzionamento, ma non in iOS 8.
In primo luogo, voglio impostare questa funzione nella mia AppDelegate.m
con la proprietà booleana nel mio AppDelegate.h
che ho chiamato videoIsInFullscreen
e funzione,
// this in the AppDelegate.h
@property (nonatomic) BOOL videoIsInFullscreen;
// This in my AppDelegate.m to allow landscape mode when the boolean property is set to yes/true.
- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{
if(self.videoIsInFullscreen == YES)
{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
else
{
return UIInterfaceOrientationMaskPortrait;
}
}
Poi nel mio ViewController.m
primo luogo, vorrei #import "AppDelegate.h"
dopo aver fatto questo, vorrei aggiungere alcune notifiche nel mio metodo viewDidLoad
..
-(void)viewDidLoad {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerStarted) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerEnded) name:@"UIMoviePlayerControllerWillExitFullscreenNotification" object:nil];
}
Naturalmente non dimenticate di togliere loro ..
-(void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UIMoviePlayerControllerWillExitFullscreenNotification" object:nil];
}
Poi, ho avuto le mie funzioni che otterrà chiamato quando queste notifiche diventano fuochi ... Qui è dove mi permetto modalità paesaggio e quindi riportarlo in verticale. Questo è il caso con la mia app perché è impostato solo per il supporto verticale, ma non lo voglio per i video di YouTube.
// first we set our property in the our AppDelegate to YES to allow landscape mode
- (void)playerStarted
{
((AppDelegate*)[[UIApplication sharedApplication] delegate]).videoIsInFullscreen = YES;
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
}
// Then I will set the property to NO and force the orientation to rotate to portrait.
- (void)playerEnded
{
((AppDelegate*)[[UIApplication sharedApplication] delegate]).videoIsInFullscreen = NO;
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait animated:NO];
}
Ma, questi non è il caso per iOS 8 .. Queste notifiche non funzionano più per iOS 8 così, ho trovato qualcosa di simile utilizzando queste notifiche, ma io non sono troppo felice, perché non sono precisi al 100% per il video player. UIWindowDidBecomeVisibleNotification
e UIWindowDidBecomeHiddenNotification
Quindi, come posso farlo correttamente o almeno che funzioni correttamente per il mio video incorporato su YouTube e consentire la modalità orizzontale in iOS 8 ...?
provato - non raggiunge -player Avviato e giocatore terminato. equest.URL.absoluteString è principalmente su: blank e http: //www.youtube.com/embed/..... - e questo è prima di riprodurre il video. Quando viene riprodotto il video dovrebbe essere avviato StarLoadWithRequest. qualche idea? – Boaz
shouldStartLoadWithRequest prenderà fuoco quando il video viene riprodotto e puoi catturare lo stato come mostrato sopra. Non sono sicuro che sto capendo correttamente la tua domanda. In non ci sono notifiche coinvolgere .. questo funziona se stai usando il video incorporato di YouTube all'interno di un iframe in una webview .. – NorthBlast
beh, doesnt :(Ho messo NSLog (@ "URL:% @", request.URL .absoluteString), all'inizio della funzione e non ottengo stampe quando clicco su play – Boaz