首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未在iOS8上调用willRotateToInterfaceOrientation

未在iOS8上调用willRotateToInterfaceOrientation
EN

Stack Overflow用户
提问于 2014-11-10 18:06:24
回答 2查看 9.9K关注 0票数 9

我在我的应用程序中使用了VFR PDF viewer library,在那里我将其呈现如下:

代码语言:javascript
复制
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,但在其他变体中却可以呢?我如何才能追踪到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-12 17:35:51

我终于设法解决了我的问题;这里是问题所在,以防其他人也有同样的问题。

我的ReaderViewController是从一个实现了viewWillTransitionToSize:withTransitionCoordinator:的类中呈现的,所以不会调用子视图控制器上不推荐使用的方法。

同样在该实现中,它不会调用

代码语言:javascript
复制
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]

因此,也没有调用所有子视图控制器的viewWillTransitionToSize:withTransitionCoordinator:方法。

修复方法是将调用添加到

代码语言:javascript
复制
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]

进入父VC的viewWillTransitionToSize:withTransitionCoordinator:方法,子类ReaderViewController,然后在我的子类中添加一个viewWillTransitionToSize:withTransitionCoordinator:,以便在ReaderViewController中调用适当的方法。

票数 12
EN

Stack Overflow用户

发布于 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中手动处理。

在我的例子中,我希望跟踪显示在具有自动布局的表视图中的顶部单元格。由于系统没有自动跟踪它,我不得不手动检查并手动滚动到适当的旋转单元格。这就是我为什么那样做的原因。它相当“笨重”,但在我的情况下可以工作。

如果有人有更简单的解决方案,我也会很感兴趣。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26841171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档