gpt4 book ai didi

ios - didRotateFromInterfaceOrientation 在旋转时触发两次

转载 作者:可可西里 更新时间:2023-11-01 04:41:22 24 4
gpt4 key购买 nike

我意识到 didRotateFromInterfaceOrientation 在 iOS 8 中已被弃用;但是,我有一个应用程序需要与 iOS7 保持兼容。我遇到的问题是,当设备旋转时(在本例中为 iPad),此方法被调用两次。这发生在实际设备和模拟器上。我只是在方法中放置了一个 NSLog 来显示这一点。

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation 
{

NSLog(@"didRotateCalled");
}

我还检查了 willRotateToInterfaceOrientation,但它只被调用一次即可正常工作。

有没有想过为什么 didRotateFromInterfaceOrientation 方法会在每次旋转时触发两次?

作为快速更新。我放置了一个断点,其中显示了一些有趣的东西。此 View 是一个 UISplitviewcontroller,看起来该方法首先为 UISplitviewcontroller 调用,然后作为 UIViewController 调用。不知道为什么...

一些附加信息。我正在使用一个用于 iPhone 和另一个 iPad 的 Storyboard。 iPhone 不使用 splitViewController。代码库是共享的,因此在 prepareForSegue 中我执行以下操作:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
UISplitViewController *splitViewController = (UISplitViewController *)self.view.window.rootViewController;
splitViewController.delegate = segue.destinationViewController;
}

最佳答案

我有我的答案。我刚刚下载了适用于 iOS 7.1 的模拟器,以便在最新的 Xcode 中使用。我发现 viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator在 iOS 7.1 下运行时不调用方法。但是,我还发现我描述的旋转两次触发的问题不会发生在 willRotateToInterfaceOrientation 上。 iOS7 中的方法,但在 iOS 8 中也是如此。这是 Apple 的一个明显错误。

看来我需要检测客户运行的操作系统版本,如果是 iOS 8 或更高版本,我将不会让它执行 willRotateToInterfaceOrientation 中的任何代码。方法。但是,我可以保留 viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator iOS 8 设备的方法,因为这个方法将被 iOS 7 忽略。

我不知道这是否只是 splitviewcontrollers 的问题或所有在 iOS 7 和 8 之间使用旋转的 View 方法的问题。如果您的应用程序没有覆盖此方法,您将永远不会知道。如果是的话,你将面临我上面所做的。不好。

这是我用来检查版本的代码:

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
if (NSFoundationVersionNumber == NSFoundationVersionNumber_iOS_7_1) // use this only for iOS7 devices as otherwise this fires twice under iOS8
{
...
}
}

我已经离开-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator方法,因为这将被 iOS 7 设备简单地忽略,但将被 iOS 8.x 调用,并且可能在更高版本。

关于ios - didRotateFromInterfaceOrientation 在旋转时触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27474012/

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