user339946
user339946

Reputation: 6119

iPad orientation not being returned correctly

I'm basically running this code:

UIInterfaceOrientation statusBarOrientation = [[UIApplication sharedApplication] statusBarOrientation];

if(statusBarOrientation == UIInterfaceOrientationPortrait){
     NSLog(@"orientation is portrait");
}

However, regardless of the actual orientation in the simulator or my iPad, it is printing "orientation is portrait". Trying to NSLog the statusBarOrientation as a %d also returns 1 no matter what the orientation.

I've stuck this is my app delegate, my view controller, and the class that I need it in, and its the same thing. All 4 device orientations are supported in my info.plist / target settings.

Does anyone have a sure fire way of figuring out the interface orientation, or why mine is not working? Thanks

Upvotes: 1

Views: 241

Answers (3)

Suresh Jagnani
Suresh Jagnani

Reputation: 330

if you dont like to used Notification for orientation.. Then use below method too.

this is example of Only Landscape Orientation in iPad and Portrait in iPhone...

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    {
        if(interfaceOrientation==UIInterfaceOrientationLandscapeLeft ||  
         interfaceOrientation==UIInterfaceOrientationLandscapeLeft)
            return YES;
        else
            return NO;
    }
    else
    {
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }
}

Upvotes: 3

Hubert Kunnemeyer
Hubert Kunnemeyer

Reputation: 2261

You can REGISTER FOR notifications on orientation changes:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];   
[[NSNotificationCenter defaultCenter] addObserver:self
                            selector:@selector(didRotate:)
                            name:@"UIDeviceOrientationDidChangeNotification" 
                            object:nil];

- (void)didRotate:(NSNotification *)notification
{   
   UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

if ((orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight)) {
         // DO STUFF
}
else if (orientation == UIDeviceOrientationPortrait) {
          //DO MORE STUFF 
}

}

Upvotes: 1

Evan
Evan

Reputation: 6161

Currently you are returning the orientation of the status bar. Instead get the orientation of the device: [[UIDevice currentDevice] orientation]

Upvotes: 0

Related Questions