gpt4 book ai didi

objective-c - 在 iPhone X iOS 12 上从底部边缘向上滑动时停止应用程序进入后台

转载 作者:行者123 更新时间:2023-12-04 02:56:53 27 4
gpt4 key购买 nike

在 iPhone X iOS 12 上从屏幕底部边缘滑动时,我的游戏进入后台模式。

根据 Apple documentation覆盖 preferredScreenEdgesDeferringSystemGestures 并调用 setNeedsUpdateOfScreenEdgesDeferringSystemGestures 应该会阻止应用程序进入后台,但这不适用于 iOS 12。

我正在使用 Unity3D,编辑器有 Defer system gestures on edges option ,这是根据苹果文档实现的,但也不起作用。

我正在 Xcode 10 中编译项目。

还有其他人有这个问题吗?你有解决办法吗?

PS:我在一个空的单 View iOS项目中测试这个,唯一添加的代码如下:

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear: animated];

[self setNeedsUpdateOfHomeIndicatorAutoHidden];
[self setNeedsUpdateOfScreenEdgesDeferringSystemGestures];
}

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures
{
return UIRectEdgeAll;
}

- (BOOL)prefersHomeIndicatorAutoHidden
{
return YES;
}

更新:事实证明,如果我使用 swift 实现,它就可以工作。太糟糕了,我无法为 Unity3D 2017 生成的项目执行此操作。

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

if #available(iOS 11.0, *){
setNeedsUpdateOfScreenEdgesDeferringSystemGestures()
}
}

override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge{
return [.all];
}
}

新更新:在 Unity 2019 中,它的工作原理是取消选中 Project Stttings\Resolution and presentation 中的“隐藏状态栏”,并确保您在 Poject Settings\Other Settings\Defer system gestures on edges 中检查至少一个边缘

最佳答案

删除 prefersHomeIndicatorAutoHidden 使其在 Objective C 中也能工作。

这是工作示例实现,适用于遇到相同问题的任何人:

- (void)viewDidLoad {
[super viewDidLoad];

if (@available(iOS 11.0, *)) {
[self setNeedsUpdateOfScreenEdgesDeferringSystemGestures];
}
}

- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures
{
return UIRectEdgeAll;
}

对于像我一样使用 Unity3d 的人,只需在生成的 Xcode 项目中从 UnityViewControllerBase+iOS.mm 中删除以下方法即可:

- (BOOL)prefersHomeIndicatorAutoHidden
{
return YES;
}

关于objective-c - 在 iPhone X iOS 12 上从底部边缘向上滑动时停止应用程序进入后台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52716873/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com