为什么UIInterfaceOrientation总是返回到右边?

时间:2012-08-23 20:52:31

标签: objective-c uiinterfaceorientation

为什么UIInterfaceOrientation总是返回到右边?
当我完成旋转时,总是在右边结束,为什么? PS:我只是想横向

这是代码

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    switch (interfaceOrientation)
    {
       case UIInterfaceOrientationLandscapeLeft:
          NSLog(@"Is Left");
       case UIInterfaceOrientationLandscapeRight:
          NSLog(@"Is Right");
       default: ;
    }

    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    switch (fromInterfaceOrientation)
    {
        case UIInterfaceOrientationLandscapeLeft:
          NSLog(@"From Left");
        case UIInterfaceOrientationLandscapeRight:
          NSLog(@"From Right");
        default: ;
    }
}

这是LOG

2012-08-23 17:45:28.074 Simulador 360[323:707] Is Right
2012-08-23 17:45:28.126 Simulador 360[323:707] Is Right
2012-08-23 17:45:28.131 Simulador 360[323:707] Is Left
2012-08-23 17:45:28.132 Simulador 360[323:707] Is Right
2012-08-23 17:45:28.138 Simulador 360[323:707] Is Left
2012-08-23 17:45:28.140 Simulador 360[323:707] Is Right
2012-08-23 17:45:31.160 Simulador 360[323:707] Is Right
2012-08-23 17:45:31.167 Simulador 360[323:707] Is Right
2012-08-23 17:45:31.977 Simulador 360[323:707] From Left
2012-08-23 17:45:31.980 Simulador 360[323:707] From Right
2012-08-23 17:45:35.684 Simulador 360[323:707] Is Left
2012-08-23 17:45:35.687 Simulador 360[323:707] Is Right
2012-08-23 17:45:35.691 Simulador 360[323:707] Is Left
2012-08-23 17:45:35.693 Simulador 360[323:707] Is Right
2012-08-23 17:45:36.502 Simulador 360[323:707] From Right

1 个答案:

答案 0 :(得分:0)

您的break语句中缺少switch个。在不调用break的情况下,执行将继续执行到下一种情况,因此如果您的情况是接口方向评估为Left,则将执行左侧和右侧大小写块。

通过在每个案例的末尾插入break来解决此问题:

switch (interfaceOrientation)
{
   case UIInterfaceOrientationLandscapeLeft:
      NSLog(@"Is Left");
      break;
   case UIInterfaceOrientationLandscapeRight:
      NSLog(@"Is Right");
      break;
   default: ;
}