我构建了一个原生的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引擎生成的吗?我已经试着注解该行,问题消失了,我还没有发现其他问题,但这样可以吗?
1条答案
按热度按时间qacovj5a1#
几个小时后,我终于修复了它,将演示风格从UIModalPresentationOverCurrentContext更改为UIModalPresentationOverFullScreen。