Моя игра переходит в фоновый режим при выполнении свайпа от нижнего края экрана на iPhone X iOS 12.
Согласно документации Apple, переопределение preferredScreenEdgesDeferringSystemGestures
и вызов setNeedsUpdateOfScreenEdgesDeferringSystemGestures
должны остановить переход приложения в фоновый режим, но это не работает на iOS 12.
Я использую Unity3D, и в редакторе есть параметр Откладывать системные жесты на краях, который реализован в соответствии с документацией Apple, но тоже не работает.
Я компилирую проект в Xcode 10.
У кого-нибудь еще есть эта проблема, и у вас есть решение?
PS: я тестирую это в пустом проекте iOS с одним представлением, единственный добавленный код следующий:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear: animated];
[self setNeedsUpdateOfHomeIndicatorAutoHidden];
[self setNeedsUpdateOfScreenEdgesDeferringSystemGestures];
}
- (UIRectEdge)preferredScreenEdgesDeferringSystemGestures
{
return UIRectEdgeAll;
}
- (BOOL)prefersHomeIndicatorAutoHidden
{
return YES;
}
Обновление: оказывается, если я использую быструю реализацию, она работает. Жаль, что я не могу сделать это для проекта, сгенерированного Unity3D 2017.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 11.0, *){
setNeedsUpdateOfScreenEdgesDeferringSystemGestures()
}
}
override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge{
return [.all];
}
}
Новое обновление: в Unity 2019 это работает, сняв флажок «Скрытая строка состояния» в «Настройки проекта» \ «Разрешение и презентация» и убедившись, что вы отметили хотя бы одно ребро в «Настройки проекта» \ «Другие настройки» \ «Отложить системные жесты на краях».
UIRectEdgeBottom
, так как там находится домашний индикатор. - person nayem   schedule 18.10.2018