Apple introduced multi-tasking in iOS 9, which allows two apps to run on the iPad in split screen mode, at the same time. This causes tradeoffs for engineers.

The idea is to allow users to have both apps in memory at the same time. Apps such as Numbers and Mail, so users can quickly copy data from the spreadsheet (Numbers) and paste that into the Mail app, without having memory calisthenics, or see the data in one app while entering/describing it in another.

I learned about this in the WWDC 2015.

The issue for engineers is that size classes and supporting all manner of orientations is now important to allow the user to control orientation and screen sizing dynamics. For engineers (me) working on an app written for iOS 8 and then updating it for iOS 9, all orientation rotation controls are gone. Methods such as -(UIInterfaceOrientationMask)supportedOrientations are not called.

So, how does one force orientation control? The only way is to resign multi-tasking control by forcing ‘Requires Full Screen’ in Target > General > toggle the ‘Requires Full Screen’ option.

Now, the code inside the method above, namely:

if (self.model.orientationLockedState == 1) {
return UIInterfaceOrientationMaskPortrait;
}
if (self.model.orientationLockedState == 2) {
return UIInterfaceOrientationMaskLandscape;
}

gets called and therefore works.

Related Post