我有两个视图控制器,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。
答案 0 :(得分:1)
如果我理解正确,shouldAutorotate
和supportedInterfaceOrientations
方法都在A viewcontroller中,它包含B viewcontroller。
如果我是对的,你实现这两种方法的方式是坏的:当当前视图控制器是self(如果_presentingChild条件为false)时,你应该有一个无限递归,因为,例如,shouldAutorotate将被递归调用没有结束(你正在返回[self shouldAutorotate]
)。
因此,如果您没有经历无限递归,那么只有两种可能性:
检查并告诉我