gpt4 book ai didi

ios - iOS 7 不调用 supportedInterfaceOrientations

转载 作者:可可西里 更新时间:2023-11-01 05:02:21 27 4
gpt4 key购买 nike

我搜索了这个问题的答案,但找不到任何解决我问题的方法。

问题来了:我有一个自定义的 UINavigationController,在创建它时,在 rootViewController 上调用了 supportedInterfaceOrientations 方法(仅支持纵向)。但是当将另一个 ViewController 插入堆栈时,不会在插入的 ViewController 上调用此方法(支持所有但倒置)。

我通过在 viewDidLoad 方法中调用 [self supportedInterfaceOrientations] 解决了这个问题,但我认为这不是解决问题的好方法。

我希望你能在这件事上帮助我。

这是我在第二个 viewController 中实现的代码。

- (BOOL)shouldAutorotate {
return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
[[[UIApplication sharedApplication] delegate] setGlobalOrientationMask:UIInterfaceOrientationMaskAllButUpsideDown];
return UIInterfaceOrientationMaskAllButUpsideDown;
}
else {
[[[UIApplication sharedApplication] delegate] setGlobalOrientationMask:UIInterfaceOrientationMaskAll];
return UIInterfaceOrientationMaskAll;
}
}

我认为 johnMa 的解决方案应该适用于大多数应用程序,但就我而言,我认为有一个特殊问题,但我现在自己解决了它(不确定它是否好,但它有效)。

我在我的 navigationController-delegate 上实现了 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 方法。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if (DEF_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7")) {
if ([viewController respondsToSelector:@selector(supportedInterfaceOrientations)]) {
[viewController supportedInterfaceOrientations];
}
}
}

我希望这可以帮助其他人遇到同样的问题。

最佳答案

您应该在您的自定义 NavigationController 中实现这些代码。

 - (NSUInteger)supportedInterfaceOrientations {
if ([self.topViewController isMemberOfClass:[RootViewController class]]){
return UIInterfaceOrientationMaskPortrait;
}else{
return UIInterfaceOrientationMaskAllButUpsideDown;
}
}

因为当您的设备旋转时,如果 supportedInterfaceOrientations 没有在那里实现,它会首先询问您的应用 rootController(Custom NavigationController)。然后它将向 rootController 询问 supportedInterfaceOrientations

A view controller that acts as the root view controller of the main window or is presented full screen on the main window can declare what orientations it supports.View Controller Programming Guide

关于ios - iOS 7 不调用 supportedInterfaceOrientations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21088956/

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