I\'m working on a Universal project with these requirements:
My suggestion is to check the hardware your application is running on. To do so, use this line of code.
if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
Then, once you have detected your hardware, block the orientation by using the shouldAutorotateToInterfaceOrientation:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation
{
return UIInterfaceOrientationIsLandscape(orientation);
}
Just as an example, you could do this
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation
{
if([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
return UIInterfaceOrientationIsLandscape(orientation); // If iPad
else
return UIInterfaceOrientationIsPortrait(orientation); // Else, it is an iPhone
}
Following the advice of @ScarletMerlin , changing the keys in info.plist is, in my opinion, the best solution for the requirements I have to fulfill (fixed orientation type for each kind of device).
Here is a print screen from the settings I use. Maybe it can help other developers with similar doubt.
The relavent source code looks like this:
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>