在dismissViewController之后,我的视图保持在iOS7中的先前视图控制器方向

时间:2014-06-26 07:35:11

标签: ios iphone ios7 navigation uiinterfaceorientation

由于我仅使用iOS应用程序支持Portrait Orientation。 但我得到了一些与迎新相关的问题。

  • 我的应用仅支持纵向展示

  • 当我的父 P1.view 使用导航推送时,它处于纵向模式,这很好。现在来自 P1.view 我正在查看我的孩子视图 C1.view

  • 现在我处于子视图 C1.view ,并从那里使用委托我打电话

    - (void)imagePickerController:(UIImagePickerController *)选择器

    [self.delegate openCamera]; //从C1.view

    调用
    -(void)openCamera   //declared in P1.view
        {
            UIImagePickerController *picker = [[UIImagePickerController alloc] init];
            picker.delegate = self;
            picker.allowsEditing = NO;
            picker.sourceType = UIImagePickerControllerSourceTypeCamera;>             
            [self presentModalViewController:picker animated:YES];
        }
    
  • 现在,当我在Lanscape模式下拍摄照片并解雇时 presentModalViewController我的视图出现在Landscapmode而不是Portrait中 模式。

        - (BOOL)shouldAutorotate {
            return YES;
        }
        - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
         return (interfaceOrientation == UIInterfaceOrientationPortrait ||
                interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown);
        }
    
        - (NSUInteger)supportedInterfaceOrientations {    
            return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
        }
        - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
            return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown);
        }
    

此方法在视图控制器(P1和C1)中定义,并在模型视图关闭时调用,但我的viewcontroller仍然在Landscape中,这不应该发生。

此代码在iOS6中运行良好,但在iOS7中运行

1 个答案:

答案 0 :(得分:0)

我认为preferredInterfaceOrientationForPresentation不应该返回一点掩码。你可以尝试:

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationPortrait; }