我在我的应用程序中使用了VFR PDF viewer library,在那里我将其呈现如下:
ReaderDocument *document = [ReaderDocument withDocumentFilePath:pdfFile password:nil];
ReaderViewController *vc = [[ReaderViewController alloc] initWithReaderDocument:document];
[self.navigationController pushViewController:vc animated:YES];如果我在iOS7上运行,一切工作正常。
如果我在iOS8上运行我的应用程序,ReaderViewController中的willRotateToInterfaceOrientation方法永远不会被调用,所以当设备旋转时,文档不会正确地重新格式化。
然而,如果我在iOS8上运行库附带的演示应用程序,ReaderViewController中的willRotateToInterfaceOrientation确实会被调用,这让我相信库是可以的,而我在应用程序中做了一些错误的事情(或者忽略了做一些事情)。
我对这种行为感到相当困惑。为什么我在iOS8上的应用程序中不能调用willRotateToInterfaceOrientation,但在其他变体中却可以呢?我如何才能追踪到这一点?
发布于 2014-11-12 17:35:51
我终于设法解决了我的问题;这里是问题所在,以防其他人也有同样的问题。
我的ReaderViewController是从一个实现了viewWillTransitionToSize:withTransitionCoordinator:的类中呈现的,所以不会调用子视图控制器上不推荐使用的方法。
同样在该实现中,它不会调用
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]因此,也没有调用所有子视图控制器的viewWillTransitionToSize:withTransitionCoordinator:方法。
修复方法是将调用添加到
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]进入父VC的viewWillTransitionToSize:withTransitionCoordinator:方法,子类ReaderViewController,然后在我的子类中添加一个viewWillTransitionToSize:withTransitionCoordinator:,以便在ReaderViewController中调用适当的方法。
发布于 2014-11-10 18:10:49
很简单,因为在iOS8中不再调用willRotateToInterfaceOrientation,所以它已被弃用。
如果没有实现新的旋转方法,并且项目是用iOS 8SDK编译的,则视图控制器-will将不会接收对已弃用的旋转方法的调用。
与您的问题类似的问题可以在here找到
引用@mluisbrown:
在iOS 8
中,不推荐使用旋转方法。这对使用iOS 7软件开发工具包构建的应用程序没有任何影响,即使在iOS 8上运行,也可能在未来几个版本的iOS上运行。
我遇到了一些和你类似的问题。我试着遵循苹果的建议使用viewWillTransitionToSize,在我的例子中,它没有解决我的问题,因为它只在从常规到紧凑的变化时触发,例如不旋转。
viewWillTransitionToSize:withTransitionCoordinator:进行基于接口的调整。
这在apple documentation中有详细介绍
WWDC 2014的一段视频也解释了这一点,但我记不清是哪段视频了。也许是What's new in Cocoa touch上的或者是View Controller Advancements in iOS 8上的。
编辑
请注意,在我的例子中,正如解释的那样,没有调用viewWillTransitionToSize,因为我没有从常规到紧凑型,所以没有大小转换,严格地说,对苹果来说。
我创建的唯一解决方案是在相应视图控制器的viewDidLayoutSubviews中手动处理。
在我的例子中,我希望跟踪显示在具有自动布局的表视图中的顶部单元格。由于系统没有自动跟踪它,我不得不手动检查并手动滚动到适当的旋转单元格。这就是我为什么那样做的原因。它相当“笨重”,但在我的情况下可以工作。
如果有人有更简单的解决方案,我也会很感兴趣。
https://stackoverflow.com/questions/26841171
复制相似问题