2012-03-12 15 views
5

Sto creando un iOS application e ho incontrato il seguente problema:iOS ritratto app ritorna da UIWebView youtube nel paesaggio

Il progetto è impostato per essere un'applicazione in modalità portrait. Ho un UIWebview, che carica una pagina web con un video youtube al suo interno. Quando si fa clic sul video, inizia nel youtube player. Quando il video passa alla modalità landscape e viene fatto clic su "done", viene restituito allo UIWebview mostrandolo in landscape.

Ricevo un NSNotification quando il video è finito ma non riesco a forzare la modalità portrait.

Questo non dovrebbe essere possibile, come posso consentire a YouTube di essere in landscape ma forzare l'app a rimanere nella modalità portrait? O c'è un'altra soluzione?

EDIT:

In caso di contatto con Apple si è rivelato essere un bug e viene segnalato.

+1

Come hai ottenuto il lettore di YouTube da un UIWebView per essere visualizzato in orizzontale? –

risposta

0

Penso che si possa utilizzare NSNotification come hai detto e nel cd metodo utilizzare questa riga di codice per il momento per forzare vista ritratto

- (void)YourMethodCalledByNSNotification 
{ 
    UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation; 

    if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight || orientation == UIInterfaceOrientationPortraitUpsideDown) 
    { 
     [[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait]; 
    } 
} 

Speranza che aiuta

2
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait]; 

è API private. Non consiglierei di usarlo.

UIWindow *window = [[UIApplication sharedApplication] keyWindow]; 
    UIView *view = [window.subviews objectAtIndex:0]; 
    [view removeFromSuperview]; 
    [window insertSubview:view atIndex:0]; 

è molto meglio, credo. Costringe l'app a regolare il suo orientamento.