views:

60

answers:

3

Hi,

I'm having problems getting my iPad app to detect its interfaceOrientation in the first UIViewController I initialize (in code). In fact, if I trace for application.statusBarOrientation, that too returns 1 (UIInterfaceOrientationPortrait) even if I launched in landscape.

If I trace self.interfaceOrientation in my first UIViewController, it remains 1 until it gets to viewWillDisappear... Which is unfortunately too late!

Here's some code (even though there's not much to see):

In my appDelegate I have this:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    
     // show loading screen first
     [window addSubview:loadingScreenViewController.view];
     [window makeKeyAndVisible];

     NSLog(@"applicationDidBecomeActive:statusBarOrientation = %d", application.statusBarOrientation);
     return YES;
}

which traces 1 (portrait), even though I clearly see the status bar is landscape... and in the first view controller I have this:

- (void)viewDidLoad
{
    [super viewDidLoad];
     NSLog(@"self.interfaceOrientation = %d", self.interfaceOrientation);
}

which also traces 1, even in landscape mode.

Any ideas? Stumped here!

Thanks :)

:-Joe

A: 

Check out this link, its for iPhone, but might it helps you .

Find the device orientation using the accelerometer | blog.sallarp.com

Ansari
Thanks for the link, but I'd rather work off the internal Interface Orientation information. I found a better workaround, by redesigning the first page to use springs and struts.
Joe
A: 

What does the app delegate report in applicationDidFinishLaunching? Because if it reports the correct value, you can always access the delegate to check the orientation.

jrtc27
Unfortunately the applicationDidFinishLaunching also states Portrait at the beginning, even if it starts in Landscape.
Joe
+1  A: 

Here is the answer... Somewhat: (from Apple Dev Forums): .... "The app is always loaded as if the device is portrait, and then if the device is really landscape the app is told that the device has rotated. This is done so that nibs and code only need to create their UI in one orientation. Otherwise it might be necessary to have two UI layouts for each nib." .... it's not the answer I'd have liked, but that's how iOS works unfortunately!

Joe