0

我有一个 viewController 类示例 FirstView,它有一个子类 ex。第二视图。SecondView 是 FirstView 的子类。现在我想检查第二个视图中的方向?

如何识别 secondView 方向?我检查了以下方法,但它不起作用。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

当我改变方向时,不会调用任何方法。

有什么方法可以识别自定义子类的方向吗?

我该如何解决这个问题?

4

3 回答 3

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 回答
0

在你的超类中,你应该调用它的超类的orientation方法,比如:

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 回答