2012-03-11 17 views
0

アプリを起動するときにiPadの向きをプログラムで検出する方法を知っている人はいませんか?アプリを起動するときにiPadの向きを検出

私は以下のメカニズムを使用しています。

- (void) detectDeviceInitialOrientation 
{ 
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 

    MyAppDelegate *appDelegate=(MyAppDelegate*)[[UIApplication sharedApplication] delegate]; 

    UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 

    if (UIDeviceOrientationIsPortrait(orientation)) { 
     appDelegate.orintation = PORTRAIT; 
    } 
    else if (UIDeviceOrientationIsLandscape(orientation)) { 
     appDelegate.orintation = LANDSCAPE; 
    } 
} 

しかし、床に平行に置いたときのデバイスの向きを検出できません。だから、私は別の解決策を探しています。助けてください......

答えて

1

docsにUIDeviceOrientation enumを見てください。

typedef enum { 
    UIDeviceOrientationUnknown, 
    UIDeviceOrientationPortrait, 
    UIDeviceOrientationPortraitUpsideDown, 
    UIDeviceOrientationLandscapeLeft, 
    UIDeviceOrientationLandscapeRight, 
    UIDeviceOrientationFaceUp, 
    UIDeviceOrientationFaceDown 
} UIDeviceOrientation; 

これはUIDeviceOrientationFaceUpUIDeviceOrientationFaceDownを定義していることに注意してください。残念ながら、ポートレイトやランドスケープのように、デバイスがこれらの向きのいずれかにあるかどうかはチェックされていません。しかし、簡単なif文で自分自身をチェックすることができます。このようなもの:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 

UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation]; 

if (orientation == UIDeviceOrientationFaceUp || orientation == UIDeviceOrientationFaceDown) { 
    // device is flat on the ground 
} 
関連する問題