ios ipad uinavigationcontroller uipopovercontroller

ios - UINavigationController dentro de UIPopoverController ''Back'' animaciones extrañas en el paisaje



ipad (1)

Tuve el mismo problema. El problema se solucionó después de que agregué soporte de orientación horizontal para ver los controladores dentro del controlador de navegación.

- (UIInterfaceOrientationMask)supportedInterfaceOrientations { return UIInterfaceOrientationMaskAll; }

Estoy perplejo :-/

Tengo una aplicación heredada en la tienda que estoy actualizando para iOS 8/9. Fue escrito hace años (pre-ARC) y es una aplicación universal para iPhone y iPad. Todo funciona ahora aparte de esto ...

En el iPad, hay una barra de herramientas en la parte superior de la pantalla desde la que presento UIPopoverControllers que contiene un UINavigationController que contiene algunas pantallas estándar del tipo UITableViewController en las que puede profundizar.

En retrato (y retrato al revés) todo funciona como se espera.

Sin embargo, en Horizontal, al pulsar ''Atrás'' (el respaldo estándar no es personalizado) produce animaciones extrañas: el controlador saliente salta fuera de la ventana emergente y se desliza rápidamente fuera de la pantalla (la dirección depende de la orientación del dispositivo) mientras que el controlador entrante simplemente aparece instantáneamente tan pronto como el controlador saliente salta fuera de la ventana emergente. Tuve que usar animaciones lentas para determinar esto, ya que a toda velocidad parece un gran problema.

Hay una corta película de 20 segundos que muestra el defecto aquí ; Tenga en cuenta lo que sucede al tocar ''Ubicaciones'' a los 14 segundos.

Si, en lugar de un UIPopover, presento la pila de VC como una hoja de formulario, todo funciona como se espera, independientemente de la orientación. También probé el nuevo UIPopoverPresentationController y experimenté el mismo problema, que me sorprendió un poco.

Esto sucede en los dos popovers que estoy presentando (uno de la izquierda de la barra de herramientas, uno de la derecha de la barra de herramientas) y ambos tienen aspectos internos muy diferentes. El único factor común es que tienen un UINavigationController dentro de un UIPopover.

He utilizado el depurador de vistas para inspeccionar la jerarquía de vistas, pero no hay nada fuera de lo común y no puedo capturar la vista durante la falla, no importa lo lento que ejecute el simulador, así que sospecho que estoy viendo un problema interno. El popover o el controlador de navegación.

¿Alguien ha visto algo similar? Veo esto tanto en el dispositivo (iOS 8.4) como en los simuladores para iOS 8 y 9.

Para el contexto, este proyecto no tiene guiones gráficos, rara vez usa xibs y generalmente construye la interfaz de usuario en código dentro de loadView; realmente es una aplicación antigua ...

Gracias por cualquier punteros. No estoy seguro de cuánto ayudará el código aquí, pero aquí está la presentación de la ventana emergente en cuestión;

LocationsViewController* locationsvc = [[LocationsViewController alloc] init]; UINavigationController *localNavigationController = [[UINavigationController alloc] initWithRootViewController:locationsvc]; localNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; [locationsvc release]; UIPopoverController* aPopover = [[UIPopoverController alloc] initWithContentViewController:localNavigationController]; aPopover.delegate = self; aPopover.backgroundColor = [UIColor colorWithWhite:0 alpha:0.9]; self.locationPopoverController = aPopover; [aPopover release]; [localNavigationController release]; [locationPopoverController presentPopoverFromBarButtonItem:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

Me sale el mismo defecto con el siguiente, nuevo código de sabor;

UINavigationController *destNav = [[UINavigationController alloc] initWithRootViewController:locationsvc]; locationsvc.preferredContentSize = CGSizeMake(320,280); UIPopoverPresentationController *newPresentationController; destNav.modalPresentationStyle = UIModalPresentationPopover; newPresentationController = destNav.popoverPresentationController; newPresentationController.barButtonItem = sender; destNav.navigationBarHidden = NO; [self presentViewController:destNav animated:YES completion:nil];

Y el mismo problema se muestra cuando uso UIModalPresentationPageSheet pero NO cuando uso UIModalPresentationFormSheet.