旋转和包含 API

4

我有两个视图控制器,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个回答

1
如果我理解正确,shouldAutorotatesupportedInterfaceOrientations方法位于包含B视图控制器的A视图控制器内。
如果我是正确的,那么你实现这两个方法的方式是不好的:当当前视图控制器为self(如果_presentingChild条件为false),你应该有一个无限递归,因为例如shouldAutorotate将被递归调用而没有结束(你正在返回[self shouldAutorotate])。
所以,如果你没有经历无限递归,只有两种可能性:
  • 这两种方法从未被调用
  • _presentingChild条件始终为真
检查一下并让我知道。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接