是否可以在SwiftUI中使模式成为不可消除的?

krj*_*rjw 5 swiftui

我正在创建一个应用程序,其中登录/注册部分位于模式内部,如果用户未登录,则会显示该模式。

问题是,用户可以通过向下滑动模式来消除该模式...

有可能防止这种情况吗?

var body: some View {
    TabView(selection: $selection) {
        App()
    }.sheet(isPresented: self.$showSheet) { // This needs to be non-dismissible
        LoginRegister()
    }
}
Run Code Online (Sandbox Code Playgroud)

第二个例子:

我正在使用一种模式来询问信息。除非通过使用“保存”按钮关闭模态,否则用户不能退出该过程。用户必须在按钮起作用之前输入信息。不幸的是,该模式可以通过向下滑动来消除。

有可能防止这种情况吗?

Mar*_* T. 5

您可以尝试使用来执行此操作highPriorityGesture。当然,蓝色矩形仅用于演示,但是您必须使用覆盖整个屏幕的视图。

struct ModalViewNoClose : View {
    @Environment(\.presentationMode) var presentationMode

    let gesture = DragGesture()

    var body: some View {

        Rectangle()
            .fill(Color.blue)
            .frame(width: 300, height: 600)
            .highPriorityGesture(gesture)

            .overlay(
                VStack{
                    Button("Close") {
                        self.presentationMode.value.dismiss()
                    }.accentColor(.white)
                    Text("Modal")
                        .highPriorityGesture(gesture)
                    TextField("as", text: .constant("sdf"))
                        .highPriorityGesture(gesture)
                } .highPriorityGesture(gesture)
        )
            .border(Color.green)
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,您仍然可以同时使用两个或更多手指来关闭模式。有什么想法吗? (3认同)