2012-08-13 22 views
17

Il mio programma corrente supporta solo l'orientamento orizzontale.Arresto di orientamento UIPopoverController in iOS 6

In iOS 6, si blocca su UIPopoverController.

'UIApplicationInvalidInterfaceOrientation', la ragione: 'supportati orientamenti non ha l'orientamento comune con l'applicazione, e shouldAutorotate sta tornando SI'

permetto tutto l'orientamento per il progetto, che sta funzionando bene. Tuttavia, ho bisogno di cambiare molto per tutte le viste per supportare solo il panorama.

C'è un altro modo semplice per risolvere, UIOrientation in UIPopoverController?

+2

Ciao @satungod, la mia risposta è stata purtroppo eliminata da un moderatore perché l'avevo già pubblicata su un altro thread ... abbastanza giusto. Si prega di trovare questa risposta qui: http://stackoverflow.com/a/12575058/662605 - Sto aggiungendo una nuova risposta per dirigere verso l'altro. – Daniel

risposta

0

Prova ad aggiungere quanto segue al UIApplicationDelegate:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { 
    return UIInterfaceOrientationMaskAll; 
} 

È ancora possibile impostare i vostri orientamenti di interfaccia supportati nel file Info.plist e restituendo una maschera in modo supportedInterfaceOrientations: di ciascun controller della vista.

+0

Questo è corretto, come per https://devforums.apple.com/it/message/731764#731764 – Zeophlite

0

Nuova una sottoclasse di UIImagePickerController e aggiungi a codici:

@property (nonatomic)NSUInteger supportedInterfaceOrientations; 

-(NSUInteger)supportedInterfaceOrientations{ 
    return _supportedInterfaceOrientations; 
} 
-(BOOL)shouldAutorotate{ 
    return YES; 
} 

usare in questo modo:

if (imagePickerController==nil) { 
     imagePickerController = [[WUIImagePickerController alloc]init];//the subclass 
     imagePickerController.delegate = self; 
     imagePickerController.supportedInterfaceOrientations = UIInterfaceOrientationMaskLandscapeRight;//any orientation you want to set 
     if (popoverController==nil) { 
      popoverController = [[UIPopoverController alloc]initWithContentViewController:imagePickerController]; 
     } 
    } 

Chi conosce un modo migliore la prego di dirmi.

+1

Dai un'occhiata alla risposta di Daniel. C'è un collegamento con una risposta. –

+1

questo non è un metodo setter imagePickerController.supportedInterfaceOrientations = UIInterfaceOrientationMaskLandscapeRight; totalmente sbagliato ... –

0

Thy questo link. Devi impostare la tua applicazione per supportare tutti gli orientamenti all'inizio. Esegui il cambiamento nel delegato dell'app.

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 

{ 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
     return UIInterfaceOrientationMaskAll; 
    else /* iphone */ 
     return UIInterfaceOrientationMaskAllButUpsideDown; 

} 
0
@interface NonRotatingUIImagePickerController : UIImagePickerController 

@end 

@implementation NonRotatingUIImagePickerController 

- (BOOL)shouldAutorotate 
{ 
    return NO; 
} 

@end 

UIImagePickerController *picker = [[NonRotatingUIImagePickerController alloc] init]; 

Usa codice di cui sopra, questo ha funzionato per me.

0
Use these delegates for orientation, 
- (BOOL)shouldAutorotate 
{ 

return YES; 
} 

-(NSUInteger)supportedInterfaceOrientations 

{ 
return UIInterfaceOrientationMaskLandscape; 

} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation 
{ 
    return UIInterfaceOrientationLandscapeLeft; 
}