Recientemente me encontré con un problema. La aplicación de mi iPad impide de alguna manera que el iPad se gire automáticamente. Mi aplicación carga un UISplitView con ambos controladores de vista devolviendo SÍ para shouldAutorotateToInterfaceOrientation :. He configurado my info.plist para que incluya la clave "Orientaciones de interfaz admitidas" con las cuatro orientaciones. Sin embargo, cuando ejecuto la aplicación, girar el dispositivo no rota la vista dividida (aunque recibo UIDeviceOrientationDidChangeNotification). Además, cuando salgo de mi aplicación con una orientación diferente que comenzó en la pantalla de inicio del iPad, no giró automáticamente a la vista correcta hasta que la gire de nuevo sin que mi aplicación se ejecute ... Cualquier idea sería muy apreciada ...UiSplitViewController no autorrota
Respuesta
UISplitViewController
es una de las subclases de controlador de vista más temperamentales que he tenido que usar. Para que funcione "perfectamente", debe existir como una sola vista de raíz en la ventana de su aplicación. Sin embargo, puedes evitar esto con algún truco: en mi caso, necesitaba un UITabBarController
con al menos dos UISplitViewController
como controladores de vista, pero luego tienes que encargarme de casos extraños que impliquen rotación y devoluciones de llamada UISplitViewControllerDelegate
sin disparar .
Aquí está la esperanza de que Apple hace UISplitViewController
más compatibles con otros componentes UIKit
en el futuro ...
Usted dijo que su primer problema es que UISplitView le impide autorrotar. Intente utilizar una Subclase de Splitview en lugar de la autorrotación enbales:
@implementation SplitViewControllerRotating
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
NSLog(@"SplitViewControllerRotating shouldAutorotate");
return YES;
}
@end
Su segundo problema suena raro. Dijo que después de salir de su aplicación debe girar, para que su iPad reconozca la orientación de la interfaz. No puedo ayudarte con eso.
Tuve el mismo problema en este momento. La razón fue que accidentalmente agregué otra vista a la ventana, además de la vista de UISplitViewController. Eliminar la vista adicional lo hizo funcionar.
¿Está configurado su UISplitViewController como su controlador de vista raíz? Si no, esa puede ser la causa de tu problema. Estaba teniendo un problema similar: la barra de estado giraría, pero mis detalles y vistas maestras se mantendrían en su lugar. Reorganicé las vistas para que el UISplitViewController fuera la raíz y luego mi 'menú principal' se presentó como un controlador de vista modal en la parte superior de la vista dividida, y se eliminó el problema de rotación.
De acuerdo con la iPad Programming Guide, "La opinión del controlador de vista dividida siempre debe estar instalado como la vista raíz de la ventana de la aplicación."
Espero que esto ayude.
me encontré con este mismo problema con dos UINavigationControllers subordinadas. En mi caso, la rotación comenzó a funcionar una vez que reemplacé shouldAutorotateToInterfaceOrientation: en el controlador izquierdo para siempre devolver 'SÍ'.
Tanto el masterView como el detailView necesitan admitir SÍ para cualquier orientación a la que intente rotar. Si ninguno de los dos devuelve SÍ, no girará. Extrañé este detalle sutil, mi retrato solo compatible con masterView. Espero que esto ayude a alguien más. – sasquatch
He encontrado que esto funcione bien - siempre que ambos hijos del UISplitViewController
aplicar la shouldAutorotateToInterfaceOrientation
:
I.e si tiene algo como:
MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController_iPad" bundle:nil];
UINavigationController *masterNavigationController = [[UINavigationController alloc] initWithRootViewController:masterViewController];
DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController_iPad" bundle:nil];
UINavigationController *detailNavigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
self.splitViewController.viewControllers = @[masterNavigationController, detailNavigationController];
self.window.rootViewController = self.splitViewController;
para definir el rootViewController
de su NSApplication
entonces ambos MasterViewController
y DetailViewController
deberían aplicar:
(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}
como para asegurar que los trabajos de rotación.
- 1. métodos de delegado UISplitViewController no llaman
- 2. ViewWillAppear no se llama con UISplitViewController
- 3. UISplitViewController Master/Detail communication
- 4. UIPopOverController dentro de UISplitViewController
- 5. UISplitViewController programáticamente sin nib/xib
- 6. Agregar fondo a todo UISplitViewController
- 7. UISplitViewController en iPad con Storyboards?
- 8. No se puede usar UISplitViewController en una aplicación universal?
- 9. iOS: UISplitViewController no puede ser empujado a UINavigationController
- 10. UISplitViewController no puede cambiar el controlador de vista maestro?
- 11. UISplitViewController y orientación - iOS <5.0
- 12. Delegado de UISplitViewController en un singleton
- 13. UISplitViewController EXC_BAD_ACCESS en la rotación usando ARC
- 14. ¿Cómo hacer un UISplitViewController en modo vertical?
- 15. UISplitViewController modo retrato que falta UIBarButtonItem
- 16. iOS 5.1 golpe gesto secuestrado por UISplitViewController - cómo evitar?
- 17. iOS (iPad) Arrastrar y colocar en un UISplitViewController
- 18. ¿Cómo usar un UISplitViewController como un controlador de vista modal?
- 19. Cómo mostrar el botón UISplitViewcontroller en el botón
- 20. ¿cómo se cambia el tamaño (visualmente, no programáticamente) de la vista de detalle de un UISplitViewController en un guión gráfico?
- 21. ¿Cómo puedo hacer una aplicación universal de iPhone/iPad que usa programáticamente UISplitViewController y UINavigationController?
- 22. UISplitViewController se contrae al costado izquierdo al girar con Menu popover visible
- 23. Saltar en un UINavigationController dentro de un UISplitViewController provoca una transición extraña
- 24. Cómo agregar una vista de inicio de sesión antes de un iPad UISplitViewController
- 25. UISplitViewController iOS 5.1 causa error de dirección de flecha de popover
- 26. iOS - UISplitViewController con storyboard - múltiples vistas maestras y múltiples vistas de detalles
- 27. UISplitViewController: ¿Cómo fuerza mostrar master popover en el lanzamiento de la aplicación? (retrato)
- 28. UITableViewController no llama
- 29. ActionSheet dentro de UISplitViewController actúa de forma diferente en el modo vertical que en el modo horizontal
- 30. presentModalViewController en UISplitViewControllers detailView que no presenta la vista en pantalla completa
Puedes evitarlo con engaños ... ¿Qué truco? ¡Te tomas el pelo! – radven
A lo que se redujo fue a reenviar manualmente los métodos de rotación apropiados. Registrando un montón de cosas para ver qué métodos eran y no nos llaman. Luego compensé en mi subclase de controlador de vista raíz asegurándome de que los controladores de vista secundarios obtuvieran los métodos correctos activados, cambiaran el tamaño de sus vistas, etc. – LucasTizma
Tengo el mismo problema en este momento de tener mis controles SplitViewController, que son pestañas bajo un TabBarController, ¡actúa errático, así que está contento de saber que no soy solo yo! ¡Gracias por esa comodidad al menos! – Gowiem