gpt4 book ai didi

iOS 6 在 dismissModalViewController 后恢复方向

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:11:23 25 4
gpt4 key购买 nike

我有一个纵向模式的 UITabBarViewController,我在横向模式下推送一个 modalViewController。当我按下模式时,旋转变为横向,但当我关闭它时,方向仍然是横向而不是恢复为纵向。

代码:

用于横向模式的 CustomUINavigationController:

- (BOOL)shouldAutorotate
{
return [[self.viewControllers lastObject] shouldAutorotate];
}

- (NSUInteger)supportedInterfaceOrientations
{
return [[self.viewControllers lastObject] supportedInterfaceOrientations];
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return [[self.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
}

uitabbar Controller

- (BOOL)shouldAutorotate
{
if ([self inModal]) {
UINavigationController *nav = (UINavigationController *)self.modalViewController;
return [[nav.viewControllers lastObject] shouldAutorotate];
} else {
return NO;
}
}

-(NSUInteger)supportedInterfaceOrientations
{
if ([self inModal]) {
UINavigationController *nav = (UINavigationController *)self.modalViewController;
return [[nav.viewControllers lastObject] supportedInterfaceOrientations];
} else {
return UIInterfaceOrientationPortrait;
}
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
if ([self inModal]) {
UINavigationController *nav = (UINavigationController *)self.modalViewController;
return [[nav.viewControllers lastObject] preferredInterfaceOrientationForPresentation];
} else {
return UIInterfaceOrientationPortrait;
}
}

- (BOOL)inModal
{
if (self.modalViewController && [self.modalViewController isKindOfClass:[UINavigationController class]]) {
return YES;
} else {
return NO;
}
}

如果我将 shouldRotate 设置为 YES,我会得到一个错误:* 由于未捕获的异常“UIApplicationInvalidInterfaceOrientation”而终止应用程序,原因:“支持的方向与应用程序没有共同的方向,并且 shouldAutorotate 返回 YES。尽管我已经在 UISupportedDeviceOrientations 中设置了两个方向。

最佳答案

我认为你的问题是由这一行引起的(你的代码中有两次):

return UIInterfaceOrientationPortrait;

我目前正在尝试做某事。类似于您尝试实现的目标,并在这里问了我的问题:iOS 6 auto rotation issue - supportedInterfaceOrientations return value not respected

您的代码的问题在于,这两种方法不返回界面方向,而是返回一个掩码,该掩码在其位中编码了允许或首选方向的组合。

试试这个:

return UIInterfaceOrientationMaskPortrait;
据我所知,

UIInterfaceOrientationPortrait 被映射到 0,因此被解释为界面方向的空集(无)。

关于iOS 6 在 dismissModalViewController 后恢复方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12544008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com