如何在ipad中识别viewController的子类的方向

时间:2012-04-23 07:04:08

标签: objective-c ipad ios5 xcode4.2

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

如何识别secondView方向?我检查了以下方法,但它无效。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

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

有没有办法确定自定义子类的方向?

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

[[UIApplication sharedApplication] statusBarOrientation]会返回当前的设备方向。

答案 1 :(得分:0)

我认为你可以使用UIAccelerometer。您只需要实现UIAccelerometerDelegate。

只是为了使用Accelerometer获取视图的当前方向,您可以使用以下代码:

- (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
        }
   }
}

如果您需要更多帮助,请与我们联系。

希望这有帮助。

答案 2 :(得分:0)

在你的超级课程中你应该调用它的超级方向方法:

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

class b inherits class a {
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
     NSLog(@"Your stufs");    
    }
}