我正在创建一个应用程序,其中登录/注册部分位于模式内部,如果用户未登录,则会显示该模式。
问题是,用户可以通过向下滑动模式来消除该模式...
有可能防止这种情况吗?
var body: some View { TabView(selection: $selection) { App() }.sheet(isPresented: self.$showSheet) { // This needs to be non-dismissible LoginRegister() } }
第二个例子:
我正在使用一种模式来询问信息。除非通过使用“保存”按钮关闭模态,否则用户不能退出该过程。用户必须在按钮起作用之前输入信息。不幸的是,该模式可以通过向下滑动来消除。
有可能防止这种情况吗?
您可以尝试使用来执行此操作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) } }