So, after some investigation and decompilation in Hopper, there is a private method in the UISplitViewController that is called when the device is rotated, which determines whether rotation should be turned off.
If the master panel is visible, the main panel has a child controller for the modal presentation (in this case, popover), and the presented popover presentationController property returns a non-zero value, and then rotation is disabled.
I can override this behavior by overriding the -view-control on the popover controller and return zero. Not sure about any side effects, but it works.
- (UIPresentationController *)presentationController { return nil; }
source share