¿Por qué didRotateFromInterfaceOrientation en una categoría causa problemas con UISplitView?

Tengo una aplicación con tabs con aa UISplitView en una de las tabs.

Estoy usando UITabBarController + iAds y tengo un problema que el desarrollador no ha podido resolver hasta ahora.

Desafortunadamente, esto es lo que parece mi interfaz de usuario en la rotation del iPad:

introduzca la descripción de la imagen aquíintroduzca la descripción de la imagen aquí

La categoría se llama desde AppDelegate y el siguiente código se usa para actualizar el anuncio cuando el dispositivo se gira:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { NSLog(@"Did rotate"); [self layoutBanner]; } 

Según lo entiendo, esto impide que MasterViewController funcione correctamente, pero no entiendo completamente el principio detrás de la cascada de llamadas a methods para comprender cómo solucionar este problema.

Esto es lo que dice la Guía de desarrollador de Apple sobre el método didRotateFromInterfaceOrientation :

Las subclasss pueden anular este método para realizar acciones adicionales inmediatamente después de la rotation.

Su implementación de este método debe llamar super en algún momento durante su ejecución.

Mi mejor suposition es que ciertas operaciones de dibujo en el controller de vista no suceden porque no estás llamando al método de la superclass desde tu implementación. Intenta solucionarlo de esta manera:

 - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { [super didRotateFromInterfaceOrientation:fromInterfaceOrientation]; NSLog(@"Did rotate"); [self layoutBanner]; } 

ACTUALIZACIÓN: en iOS 8, este método está en desuso y ya no se llama cuando se gira el dispositivo. En su lugar, necesita usar un nuevo método:

 - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator { [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; NSLog(@"Szie changed"); [self layoutBanner]; }