私がこれを解決した方法は、プロジェクト全体を縦向きのみとして表示し、回転する必要があるビューでは、以下のように viewDidLoad に NSNotifier を設定することでした。
NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(handleOrientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
次に、次のように方向の変更を処理します。
-(void)handleOrientationDidChange:(NSNotification *)notification
{
UIDeviceOrientation interfaceOrientation = [[UIDevice currentDevice] orientation];
if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
// Change view frame to fit landscape mode and rotate
} else {
// Reset view frame to fit portrait mode and rotate back to orignal position
}
これがあなたのニーズに合うかどうかはわかりませんが、VC1 がローテーションする必要があり、VC2+ がローテーションしなかった状況をどのように処理したかを説明します。