我已经介绍了一个模式视图,但是我希望用户先经历一些步骤才能将其关闭。当前可以拖动视图以将其关闭。
有没有办法阻止这种可能性?
我已经看过WWDC会议的视频,他们提到了它,但是我似乎没能确切地知道我需要的代码。
struct OnboardingView2 : View {
@Binding
var dismissFlag: Bool
var body: some View {
VStack {
Text("Onboarding here! ")
Button(action: {
self.dismissFlag.toggle()
}) {
Text("Dismiss")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我目前有一些文本和一个按钮,以后会使用它来关闭视图。
在WWDC 2019上,Apple宣布了一种新的“卡片式”外观模态演示,并带有内置手势,可通过向下滑动卡片来消除模式视图控制器。他们还引入了新isModalInPresentation属性,UIViewController以便您可以选择拒绝这种解雇行为。
但是到目前为止,我还没有找到在SwiftUI中模拟这种行为的方法。使用.presentation(_ modal: Modal?),不,据我所知,让你以同样的方式禁止解雇手势。我还尝试将模式视图控制器放在内UIViewControllerRepresentable View,但这似乎也无济于事:
struct MyViewControllerView: UIViewControllerRepresentable {
func makeUIViewController(context: UIViewControllerRepresentableContext<MyViewControllerView>) -> UIHostingController<MyView> {
return UIHostingController(rootView: MyView())
}
func updateUIViewController(_ uiViewController: UIHostingController<MyView>, context: UIViewControllerRepresentableContext<MyViewControllerView>) {
uiViewController.isModalInPresentation = true
}
}
Run Code Online (Sandbox Code Playgroud)
即使在出席会议之后,.presentation(Modal(MyViewControllerView()))我仍然可以向下滑动以消除视图。当前是否可以使用现有的SwiftUI构造来做到这一点?
我怎样才能呈现一个将占据全屏并且不能通过向下滑动来消除的模式?目前我正在使用.sheet一个视图来呈现一个可关闭的模式。
我没有注意到 Xcode 中的任何测试版更改会改变这种行为。
任何帮助,将不胜感激 :)