如何在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
相关产品推荐
相关产品推荐

