cordova-ios 8.0.0在iPadOS 26上无法锁定屏幕方向的问题咨询(UIScene与AppDelegate行为差异)
cordova-ios 8.0.0在iPadOS 26上无法锁定屏幕方向的问题咨询(UIScene与AppDelegate行为差异)
最近升级到iPadOS 26后,我碰到个头疼的问题:之前一直锁定横屏的iPad应用,用cordova-ios 8.0.0重新构建后,完全不遵守屏幕方向锁定规则了,但之前用旧版本构建的同一款应用却能正常工作。
后来我搞清楚了原因:cordova-ios 8.x强制所有应用切换到苹果的现代UIScene窗口模型,而在iPadOS 26上,这个模型完全不再理会方向锁定的设置。反观cordova-ios 7.1.1,它仍然沿用旧的仅AppDelegate生命周期,所以iPadOS会把这类应用识别为传统的全屏单场景应用,和以前一样严格执行仅横屏的方向限制。
这可不是单纯的界面显示问题——任何依赖deviceorientation(比如靠设备倾斜实现重力感应的游戏),在cordova-ios 8.x环境下都会彻底玩不了。因为系统会随时旋转应用窗口,瞬间翻转deviceorientation的坐标系,直接把游戏的物理逻辑搞崩。而只要回退到cordova-ios 7.1.1,就能恢复稳定的方向锁定和正确的倾斜感应效果。
还有个额外要注意的点:在iPadOS 26上,用户必须开启设置→多任务与手势→全屏应用,否则系统会强制应用进入窗口模式,哪怕是用cordova-ios 7.x构建的传统应用,方向锁定也会被忽略。
总结一下两种组合的表现:
cordova-ios 8.x+ iPadOS 26:无法锁定屏幕方向,依赖倾斜感应的游戏彻底失效cordova-ios 7.1.1+ iPadOS 26:方向锁定正常生效(前提是开启了全屏应用设置)
备注:内容来源于stack exchange,提问作者Craig Prosser




