madcoderz
madcoderz

Reputation: 4431

shouldAutorotateToInterfaceOrientation not being called iphone

So i'm trying to make some view rotate but the method is not even called and i'm so frustrated. Here is the method:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

I also tried:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return ((interfaceOrientation == UIInterfaceOrientationPortrait) ||
            (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (interfaceOrientation == UIInterfaceOrientationLandscapeRight));
}

My info.plist looks like this:

enter image description here

What i'm i missing ? I've looked at all the answers i found here in SO but still the problem remains.

Upvotes: 0

Views: 1843

Answers (2)

sergio
sergio

Reputation: 69027

Possibly you need specify also portrait orientation as supported in your info.plist. (Actually it is possible that also removing those orientation keys entirely will do).

By the way: which kind of app are you building? do you use a tab bar or navigation controller (they have specific restrictions for orientation change)?

EDIT:

for a tab bar controller, it is required that all controllers managed by it support a given orientation for autorotation to work.

Upvotes: 1

Pripyat
Pripyat

Reputation: 2937

This only works if you subclass your own UIViewController. Apple's default implementation returns NO for all these values except for UIInterfaceOrientationPortrait (obviously). So create a new file, make it a subclass of UIViewController, go to its .m file and paste this in:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES; //that's enough
}

Then use this subclass as your view controller and the rotation will work.

Upvotes: 0

Related Questions