Compatible con la aplicación universal con orientación vertical en iPhone y horizontal + vertical en iPad

Necesito que mi aplicación sea compatible tanto en iPad como en iPhone. Tiene un tabbarController como rootViewController.

En iPad, necesito que esté disponible tanto en horizontal como vertical. Sin embargo, en iPhone necesito que rootView sea Portrait en sí y tengo algunos viewControllers, que se presentan en el tabbarController, que deben estar disponibles tanto en horizontal como en Portrait (por ejemplo, un viewController utilizado para reproducir videos de Youtube). Así que estoy bloqueando la rotación de tabbarController de la siguiente manera (en la subclase UITabbarController).

# pragma mark - UIRotation Methods

- (BOOL)shouldAutorotate{
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad);
}

- (NSUInteger)supportedInterfaceOrientations{
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) ? UIInterfaceOrientationMaskAll : UIInterfaceOrientationMaskPortrait;
}

Lo que pretendo hacer es que al bloquear la rotación del rootviewController (tabbarController), estoy bloqueando todos los VC en el tabbarController (solo en iPhone) y las vistas que se presentan en la parte superior del tabbarController pueden rotar según la orientación del dispositivo.

EL PROBLEMA

Todo funciona como se espera hasta que la aplicación se inicie en el paisaje en el iPhone. Cuando se inicia en el modo horizontal, la aplicación se establece de forma predeterminada en horizontal e inicia la aplicación en el modo horizontal que no está previsto. Debería iniciarse en el modo vertical incluso si la orientación del dispositivo es horizontal. Como estoy desactivando la rotación automática para iPhone, la aplicación continúa en el paisaje mismo, lo que genera un error. Intenté este método para forzar que la aplicación se inicie en vertical en la aplicación: didFinishLaunchingWithOptions:

#pragma mark - Rotation Lock (iPhone)

- (void)configurePortraitOnlyIfDeviceIsiPhone{
    if ((UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone))
        [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];
}

Aún persiste el problema. He permitido todas las opciones de orientación en la lista info.plist para la clave SupportedInterfaceOrientaions tanto para iPad como para iPhone, ya que necesito que la aplicación esté en horizontal para iPhone, aunque solo sea por unos pocos controles de vista. El problema se puede solucionar si de alguna manera puedo forzar que la aplicación se inicie en orientación vertical, incluso si la orientación del dispositivo es horizontal. Corríjame si estoy equivocado en la lógica, de lo contrario, se agradecerá cualquier ayuda para hacer que la aplicación se inicie en modo vertical.

Ya he pasado poresta pregunta aquí yaquí, pero no pude hacerlo funcionar todavía.

Gracias

Respuestas a la pregunta(1)

Su respuesta a la pregunta