旋转和遏制api

时间:2013-05-20 20:25:30

标签: ios uiviewcontroller auto-rotation

我有两个视图控制器,A和B. A只是支持肖像,而B可以支持横向。我正在使用收容api显示B.

 [self addChildViewController:child];
[self.view addSubview:child.view];
child.view.frame = self.view.bounds;
[child didMoveToParentViewController:self];

我已经实施了

 - (BOOL)shouldAutorotate
{
    UIViewController *current = _presentingChild ? _child : self;
    return [current shouldAutorotate];
}

- (NSUInteger)supportedInterfaceOrientations
{
    UIViewController *current = _presentingChild ? _child : self;
    return [current supportedInterfaceOrientations];
}

一切都像魅力一样。如果设备在呈现A时是横向的,而我呈现B则旋转立即转动。

当我解雇B时,问题出现了。如果设备是横向A,则显示横向(这不应该发生)。

你有建议如何面对这个问题吗?我知道我可以使用模态控制器,这将解决问题。但我不想在这种特定情况下使用模态vc。

1 个答案:

答案 0 :(得分:1)

如果我理解正确,shouldAutorotatesupportedInterfaceOrientations方法都在A viewcontroller中,它包含B viewcontroller。

如果我是对的,你实现这两种方法的方式是坏的:当当前视图控制器是self(如果_presentingChild条件为false)时,你应该有一个无限递归,因为,例如,shouldAutorotate将被递归调用没有结束(你正在返回[self shouldAutorotate])。

因此,如果您没有经历无限递归,那么只有两种可能性:

  • 这两种方法永远不会被称为
  • _presentingChild条件始终为真

检查并告诉我