Motivo: Ci possono essere molte possibilità per questo problema.
1) se del viewController
tuo punto di vista è un subView
di qualche altro rootViewController
che non è un navigationController
, allora ci potrebbe essere possibilità che la chiamata di rotazione non si propaga al controllore di visualizzazione secondaria.
2) qualche parte ho letto che se Super
metodi non vengono chiamati correttamente dove è necessario allora potrebbe essere la causa del problema rotazione, il che significa che tutti ViewControllers in vista pila che sono collegati al autorotazione devono chiamare i super
metodi nelle implementazioni del metodo (ovvero chiamando [super viewDidLoad]
da ViewController's viewDidLoad
).
È possibile utilizzare sotto il trucco per gestire le modifiche di orientamento.
Registrare un notificatore in viewWillAppear.
-(void)viewWillAppear:(BOOL)animated{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];}
Il cambiamento di orientamento notificherà la funzione seguente.
- (void)orientationChanged:(NSNotification *)notification{
[self handleOrientation:[[UIApplication sharedApplication] statusBarOrientation]];}
che chiamerà il metodo riportato di seguito in cui è possibile gestire le modifiche di orientamento.
- (void) handleOrientation:(UIInterfaceOrientation) orientation {
if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown)
{
//handle the portrait view
}
else if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
{
//handle the landscape view
}
}
fonte
2013-01-05 10:02:50
Motivo numero 2 risolto il mio problema ... Super deve essere chiamato – lucaslt89