SwiftUI 中的 preferredScreenEdgesDeferringSystemGestures [英] preferredScreenEdgesDeferringSystemGestures in SwiftUI

查看:35
本文介绍了SwiftUI 中的 preferredScreenEdgesDeferringSystemGestures的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

UIKit 中有一个选项可以禁用Home"系统从底部向上滑动(不是完全禁用,但滑动会忽略第一次,如果他真的想要它会强制用户重复它).setNeedsUpdateOfScreenEdgesDeferringSystemGestures() 实际上正是我所需要的.

in UIKit there is an option to disable "Home" system swipe up from bottom (not completely disable, but swipe ignores first time and will force user to repeat it if he really wants it). setNeedsUpdateOfScreenEdgesDeferringSystemGestures() actually does right what I need.

但是我如何在 SwiftUI 中达到同样的效果?

But how do I reach the same in SwiftUI?

我尝试在 SceneDelegate 中像这样调用这个方法:

I tried to call this method in SceneDelegate like this:

        let window = UIWindow(windowScene: windowScene)
        let uiKitView = UIHostingController(rootView: contentView)
        uiKitView.setNeedsUpdateOfScreenEdgesDeferringSystemGestures()
        window.rootViewController = uiKitView

但如果您不覆盖 preferredScreenEdgesDeferringSystemGestures 以返回 .all,则它不起作用我无法覆盖 UIHostingController 的这个计算属性:

but its doesn't work if you doesn't override preferredScreenEdgesDeferringSystemGesturesto return .all I can't override this computed property of UIHostingController:

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

我收到警告:

泛型类的扩展不能包含'@objc'成员

Extensions of generic classes cannot contain '@objc' members

有人知道如何到达吗?

推荐答案

只需在自定义主机控制器中覆盖它

Just override it in custom hosting controllers

class MyHostingController<Content: View>: UIHostingController<Content> {
    open override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge{
        return [.all];
    }
}

并将其用作根控制器

let window = UIWindow(windowScene: windowScene)

let controller = MyHostingController(rootView: contentView)
controller.setNeedsUpdateOfScreenEdgesDeferringSystemGestures()

window.rootViewController = controller

这篇关于SwiftUI 中的 preferredScreenEdgesDeferringSystemGestures的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆