ios 呈现视图控制器放置在呈现视图控制器下

5jdjgkvh  于 2022-12-05  发布在  iOS
关注(0)|答案(1)|浏览(241)

我构建了一个原生的iOS框架,并将其导入到Unity项目中,以管理游戏帐户(登录、注销、注册...)。当我调用框架方法显示登录屏幕时,它会显示出来,但位于显示视图控制器下。

- (void)showViewController:(UIViewController *)controller {
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:controller];
    nav.navigationBarHidden = YES;
   [nav setModalPresentationStyle: UIModalPresentationOverCurrentContext];
   [[UIViewController topMostController] presentViewController:nav animated:YES completion: nil];
}
+ (UIViewController*) topMostController {
    UIViewController *topController = [UIApplication sharedApplication].keyWindow.rootViewController;
    while (topController.presentedViewController) {
      topController = topController.presentedViewController;
    }
    return topController;
}

topMostController返回UnityDefaultViewController(也是keyWindow的rootViewController),而showViewController的输入是我的SigninViewController,为什么它会放在UnityDefaultViewController下面?我之前已经将此框架导入到几款Unity游戏中,但这是我第一次看到这个问题。
[更新]查看代码后,Unity引擎生成的某行代码(我的Unity开发人员说)导致了该问题:

- (void)showGameUI
{
   ...
   [_window addSubview: _rootView]; //this line cause the issue
   _window.rootViewController = _rootController;
   [_window bringSubviewToFront: _rootView];
   ...
}

有人能确认这行代码是由Unity引擎生成的吗?我已经试着注解该行,问题消失了,我还没有发现其他问题,但这样可以吗?

qacovj5a

qacovj5a1#

几个小时后,我终于修复了它,将演示风格从UIModalPresentationOverCurrentContext更改为UIModalPresentationOverFullScreen。

相关问题