即使我按下电源按钮,也会调用 viewWillTransitionToSize

viewWillTransitionToSize called even if i press power button

当我的应用程序 运行 并且我按下电源按钮(锁定设备)时,此函数正在调用。

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator

并使用

返回当前状态UIApplicationStateActive
[UIApplication sharedApplication].applicationState

如何防止调用这个函数?或者如果按下电源按钮如何忽略?因为我不想在按下 powerButton 时执行任何操作。

前提条件:启动屏幕应该存在。

我调查了这种行为。好像只有iPad才会出现这种情况,可能跟分屏功能有关

尝试通过在方法开头添加来忽略方法中的代码 运行:

if([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) {
return;
}

更新:

我找到了这个问题的原因。

当您按下 "power" 按钮时,应用程序 window 会更改其大小,有时会在应用程序设置正确的 applicationState 之前发生:

这就是调用此方法的原因。 对不起我的英语=)

由于多任务处理的新功能,此功能调用应用程序最小化和电源按钮按下。
你可以让你的应用程序全屏来解决这个问题。

检查 ✓ Requires full screen

但这不是正确的解决方案,因为在某些情况下您必须采用多任务处理。