You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Objective-C中正确使用requestGeometryUpdateWithPreferences方法

正确的Objective-C对应代码

你的Swift代码用于请求窗口场景强制切换为竖屏,对应的Objective-C需要正确构造偏好设置对象,而非直接传入方向掩码。正确写法如下:

UIWindowScene *windowScene = self.view.window.windowScene;
if (!windowScene) {
    return;
}
UIWindowSceneGeometryPreferencesIOS *preferences = [[UIWindowSceneGeometryPreferencesIOS alloc] init];
preferences.interfaceOrientations = UIInterfaceOrientationMaskPortrait;
[windowScene requestGeometryUpdateWithPreferences:preferences errorHandler:^(NSError * _Nullable error) {
    // 可在此处理错误,例如打印错误信息
    if (error) {
        NSLog(@"几何更新请求失败: %@", error.localizedDescription);
    }
}];

错误说明

你之前的写法问题在于:直接将UIInterfaceOrientationMaskPortrait枚举值传给了requestGeometryUpdateWithPreferences:方法,但该方法要求的参数是遵循UIWindowSceneGeometryPreferences协议的对象。在iOS场景下,必须用UIWindowSceneGeometryPreferencesIOS实例封装方向偏好设置。

另外,Swift里的guard let对应Objective-C的空值判断,建议加上if (!windowScene)的校验,避免空指针调用。

内容的提问来源于stack exchange,提问作者Fleeploed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 17:20:27