I have a strange problem in an iPhone app I'm developing. I want my app to support ONLY portrait mode, but for some reason I can't do it (device & simulator).
To support only portrait mode I did as follow:
shouldAutorotateToInterfaceOrientation
But as I said it won't work, and the strange result is that the app support ALL the orientations (portrait, upside down, landscape left, landscape right).
Any ideas?
this how I implement shouldAutorotateToInterfaceOrientation
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
NSLog(@"Checking orientation %d", interfaceOrientation);
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
I notice just now that when I rotate the phone I get this message:
"Two-stage rotation animation is deprecated. This application should use the smoother single-stage animation."
What does it means?
NSLog(@"Checking orientation %d", interfaceOrientation);
to your shouldAutorotateToInterfaceOrientation
methods. Are any of them being called when you rotate the simulator or your device - Dondragmer 2012-04-07 22:48
UIInterfaceOrientationPortrait
, which is what you're expecting. If that really happens when you're rotating to landscape, this is weirder than ever: the device returns YES because it thinks it's rotating to portrait. Can you post a complete shouldAutorotateToInterfaceOrientation
method - Dondragmer 2012-04-10 13:57
didAnimate...
methods should have no effect. shouldAutorotateToInterfaceOrientation:
is all that matters. What gets logged if you turn your device to each of the four orientations? Does it display Checking orientation 1
four times - Dondragmer 2012-04-12 11:03
shouldAutorotateToInterfaceOrientation:
methods all contain this logging statement - Dondragmer 2012-04-12 12:24
UITabBarController
is itself a ViewController. The default implementation seems to respond to shouldAutorotateToInterfaceOrientation:
by querying its subviews, but if you created your own subclass of UITabBarController
, it may have its own version. Did you subclass UITabBarController
- Dondragmer 2012-04-12 12:43
It is possible to have multiple ViewControllers on the screen. The UITabBarController
is itself a UIViewController
, and it only passes shouldAutorotateToInterfaceOrientation:
requests to the viewControllers within if it chooses. The default implementation does this, but if you subclass it, the code XCode generates (as of iOS 5.1) does not.
Go to info.plist file. Right Click open it as source code. And look for this line. For me in iPad its like this:
<key>UISupportedInterfaceOrientations~ipad</key>
Delete all other orientation and keep the only one which you need..Like this :
<array>
<string> UIInterfaceOrientationPortrait </string>
</array>
check your plist and make sure the key there is set correctly.