So che è necessario utilizzare i nuovi metodi di rotazione per IOS6, ma sembra che il metodo che ho scritto non funzioni.Problema di rotazione IOS6
ho settati mio file plist per consentire a tutti la rotazione ma non portraitUpsideDown
Ho poi avuto il seguente nel mio AppDelegate:
self.navController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
[self.window setRootViewController:navController]; //add nav controller to be the root view
Poi nel mio rootView, per spingere a un altro controller , Ho:
WebViewViewController *webController = [[JBWebViewViewController alloc] init];
webController.urlString = urlName;
[self.navigationController pushViewController:webController animated:YES];
E Nel controller Web ho ve:
#pragma mark - System Rotation Methods
//for any version before 6.0
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
//only allow landscape
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
/for 6.0+
- (BOOL)shouldAutorotate{
return NO;
}
- (NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskPortrait;
}
Quello che voglio fare, è quello di consentire 3 rotazioni nella vista principale, ma quando passare alla visualizzazione Web (da notare lo faccio spingere la navigazione, non aggiunge visualizzazione secondaria), voglio solo consentire visualizzazione verticale .
Qualcuno mi aiuti per favore
------- ---------- UPDATE
Ho creato il mio navController sottoclasse di UINavigationController, ho un landscapeModeOn BOOL che posso installare per raccontare specifiche rotazione automatica
#pragma mark - System Rotation Methods
//for any version before 6.0
- (BOOL)shouldAutorotateToInterfaceOrientation (UIInterfaceOrientation)interfaceOrientation
{
if (landscapeModeOn) {
return interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown;
} else {
return interfaceOrientation == UIInterfaceOrientationPortrait;
}
}
//for 6.0+
- (NSUInteger)supportedInterfaceOrientations{
if (landscapeModeOn) {
return UIInterfaceOrientationMaskAllButUpsideDown;
} else {
return UIInterfaceOrientationMaskPortrait;
}
}
- (BOOL)shouldAutorotate{
UIInterfaceOrientation ori = [UIDevice currentDevice].orientation;
if (landscapeModeOn) {
return ori != UIInterfaceOrientationPortraitUpsideDown;
} else {
return ori == UIInterfaceOrientationPortrait;
}
}
NEL subviews carico, lo faccio:
- (void)viewWillAppear:(BOOL)animated{
//get nav controller and turn off landscape mode
JBNavController *navController = (JBNavController*)self.navigationController;
[navController setLandscapeModeOn:NO];
[navController shouldAutorotate];
}
-------------------- Fare riferimento alla citazione della migliore risposta Per IOS6, la mela si sta ora concentrando sull'utilizzo del layout automatico dello storyboard insieme alle nuove definizioni di rotazione, è difficile correggere alcuni bug piccoli per IOS6 basati sulle iOS 4.3 e iOS 5 di codifica struttura
Da applefreak, il suo suggerimento accennato su:
Una sfida principale nel tuo caso non gestisce gli orientamenti. In realtà è il blocco delle diverse view controller a particolare orientamento
Sebbene manuale Ruota vista sembra davvero difficile fare a meno di eventuali bug, ma sembra l'unica soluzione ora sto provando, vi posto ancora una volta risolto
Secondo la risposta di rooster117, questa è la mia soluzione: [http://stackoverflow.com/questions/12662240/how-to-make-app-fully- lavoro-correttamente-per-autorotazione-in-ios-6/12.662.433 12.662.433 #] [1] [1]: http://stackoverflow.com/questions/12662240/how-to-make-app -solo-funzionante-correttamente-per-autorotazione-in-ios-6/12662433 # 12662433 – Carina