0

私は1つのviewControllerクラスのサンプルFirstViewを持っており、それには1つのサブクラスexがあります。セカンドビュー。SecondView は FirstView のサブクラスです。2 番目のビューで方向を確認したいですか?

secondView の向きを特定するにはどうすればよいですか?次の方法を確認しましたが、機能しません。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

向きを変更しても、メソッドは呼び出されません。

カスタム サブクラスの向きを識別する方法はありますか?

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

0

あなたのスーパークラスでは、そのスーパーの方向メソッドを次のように呼び出す必要があります。

Class A {
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
         [super shouldAutorotateToInterfaceOrientation:interfaceOrientation];
    }
}

class b inherits class a {
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
     NSLog(@"Your stufs");    
    }
}
于 2012-04-26T05:26:16.620 に答える
0

[[UIApplication sharedApplication] statusBarOrientation]現在のデバイスの向きを返します。

于 2012-04-23T07:42:52.790 に答える
0

UIAccelerometer を使用できると思います。UIAccelerometerDelegate を実装するだけです。

加速度計を使用してビューの現在の向きを取得するには、次のコードを使用できます。

- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
    // Get the current device angle
    float x = [acceleration x];
    float y = [acceleration y];
    float angle = atan2(y, x); 



 if([acceleration z]>-0.84)
 {
        if(angle >= -2.25 && angle <= -1)  // Current Orientation = Portrait
        {
             //Do the work
        } 
        else if(angle >= -0.35 && angle < 0.20) //Current Orientation = Landscape Left
        {
              //Do the work
        }
        else if(angle >= 0.90 && angle <= 2.00) //Current Orientation = Portrait Upside Down
        {
             //Do the work
        }
        else if(angle <= -2.70 || angle >= 2.5) //Current Orientation = Landscape Right
        {
              //Do the work
        }
   }
}

これについてさらにサポートが必要な場合はお知らせください。

お役に立てれば。

于 2012-04-26T05:12:12.667 に答える