в UIKit
есть возможность отключить «домашнее» свайпирование системы снизу вверх (не полностью отключить, но свайп игнорирует первый раз и заставит пользователя повторить его, если он действительно этого захочет). setNeedsUpdateOfScreenEdgesDeferringSystemGestures()
на самом деле правильно делает то, что мне нужно.
Но как мне достичь того же в SwiftUI?
Я пытался вызвать этот метод в SceneDelegate так:
let window = UIWindow(windowScene: windowScene)
let uiKitView = UIHostingController(rootView: contentView)
uiKitView.setNeedsUpdateOfScreenEdgesDeferringSystemGestures()
window.rootViewController = uiKitView
, но это не работает, если вы не переопределите preferredScreenEdgesDeferringSystemGestures
для возврата .all
Я не могу переопределить это вычисленное свойство UIHostingController
:
extension UIHostingController {
open override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge{
return [.all];
}
}
Я получаю предупреждение:
Расширения классов generi c не могут содержать членов '@ obj c'
Кто-нибудь знает, как этого достичь?