Want one view landscape-only, other view portrait-only, does not work (read many StackOverflow posts)

The previous screen (user registration form) in my iOS app is ONLY portrait, and I have another screen (image gallery) that should ONLY be landscape, and so the Xcode settings for my project support portrait, landscape left, and landscape right (right???).


However, the previous screen (user registration form) should ONLY be portrait (this has always been the case, though), and the current screen (the image gallery) should ONLY be landscape (by that I mean landscape left and landscape right -- NEVER portrait, even at start).


Accordingly, I added these overridden methods to my current screen's view controller like so:


- (NSUInteger)supportedInterfaceOrientations{ return UIInterfaceOrientationMaskLandscape; }
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationLandscapeRight; }
- (BOOL)shouldAutorotate { return YES; }


This is what all of the documentation and Stack Overflow advice says should do the trick (including official Apple Technical Note #2244 https://developer.apple.com/library/content/technotes/tn2244/_index.html). This isn't enough. 😐


Transitioning off the previous screen (which WAS portrait) means that we show this new view controller in portrait, and so the current screen is in portrait even though the only "supported interface orientations" are landscape. It SHOULD be landscape even if the user is holding their phone vertically in portrait, in order to encourage them to switch to landscape (the image gallery looks very UGLY and unusable in portrait -- it should ONLY show in landscape mode).

To be clear, both the image gallery and user registration form view controllers are the root view controller like so:


- (void)presentGalleryViewController {
    [self.window setRootViewController:self.galleryViewController];
    [self.window makeKeyAndVisible];
}

- (void)presentUserRegistrationFormViewController { 
    [self.window setRootViewController:self.userRegistrationFormViewController];
    [self.window makeKeyAndVisible];
}


How can I force this new view controller to start in one of the landscape orientations instead, encouraging the user to turn their phone IRL?


It's really unclear given the plethora of conflicting and contradictory information around here about which methods to override, etc.


Let's assume that iOS 8 is the oldest version that we're using.


Other notes:


Maybe I'm encoutering the following UIKit regression?
http://petersteinberger.com/blog/2015/rotation-multiple-windows-bug/

https://gist.github.com/steipete/8df39fea0d39680a7a6b

Maybe it's the following Xcode 4.3 bug?
https://stackoverflow.com/questions/10096672/uiwindows-root-view-controller-does-not-rotate-to-landscape-at-app-launch


Help!!! This one defies all common sense logic!

Want one view landscape-only, other view portrait-only, does not work (read many StackOverflow posts)
 
 
Q