如果我在 iOS 8 中更改 topviewcontroller 的方向,则不会调用 NavigationController willRotateToInterfaceOrientation

Posted

技术标签:

【中文标题】如果我在 iOS 8 中更改 topviewcontroller 的方向,则不会调用 NavigationController willRotateToInterfaceOrientation【英文标题】:NavigationController willRotateToInterfaceOrientation is not getting called if i change the orientation of the topviewcontroller in iOS 8 【发布时间】:2014-11-25 13:04:13 【问题描述】:

我的应用是基于导航的。我已经扩展了 UINavigationController 并在 NavigationController 和各个 ViewControllers 中实现了以下方法。

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 持续时间:(NSTimeInterval)duration -(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

当方向改变发生在 ios 7 中,导航控制器中的 First Rotation 方法被调用,然后实际视图控制器中的相同方法被调用。我非常需要这个。

iOS8 的情况下,仅调用 Viewcontroller 的 Rotation 方法,而不是 Navigation 控制器。

注意:我也没有使用任何 ios 8 特定的定位方法。因为我改变了很多东西。所以请不要建议我实现以下 - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator

【问题讨论】:

它已在 iOS8 中被弃用,取而代之的是 -viewWillTransitionToSize:withTransitionCoordinator: 【参考方案1】:

iOS 8 已弃用该方法

在执行一步用户界面旋转之前发送到视图控制器。

Use viewWillTransitionToSize:withTransitionCoordinator: to make interface-based adjustments.

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
                                         duration:(NSTimeInterval)duration

另请注意,当我们收到此通知时,视图已经更改为新方向。

更多参考https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/index.html#//apple_ref/occ/instm/UIViewController/willAnimateRotationToInterfaceOrientation:duration:

【讨论】:

Question 明确要求 not 引用该方法。你能澄清你的答案吗?

以上是关于如果我在 iOS 8 中更改 topviewcontroller 的方向,则不会调用 NavigationController willRotateToInterfaceOrientation的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 8.2 上更改 UIBarButtonItem 的垂直位置

iOS 8 自定义键盘方向更改

iOS 8 - 关闭全屏 AVPlayerViewController 时将方向更改回纵向

iOS 8自定义键盘:更改高度

更改日期选择器的文本颜色

当 html 中的标签更改时,粘贴弹出窗口在 safari(装有 iOS 8.0.2 的 iPad)中消失