ios 13中的手势似乎不允许使用.sheet启动模式视图,也不允许使用.alert。警报和表格似乎仅适用于按钮,图像和其他对象,而不适用于手势。除了使用具有隐藏之类的问题的按钮以外,其他任何解决方法都无法解决。
ZStack(alignment: .top) {
MapView(currentTab: self.$selection, mapViewModel: self.mapViewModel)
.edgesIgnoringSafeArea(.all)
.environment(\.colorScheme, .light)
.overlay(Rectangle()
.opacity(0.1)
//.background(Color.clear)
.background(Image("Cursor_Flecha_4.svg")
.resizable()
.aspectRatio(contentMode: .fit)
.scaledToFit()
//.frame(width: 32.0, height: 32.0))
.frame(width: geo.size.width, height: geo.size.height * 0.15))
.border(Color.red, width: 4)
.frame(width: geo.size.width, height: geo.size.height * 0.25)
.gesture(
DragGesture(minimumDistance: 50)
.onEnded { gesture in
if ((gesture.translation.width >= 50) && (abs(gesture.translation.height) <= 20)) {
print("swipe right detected")
// GetRouteName()
.sheet(isPresented: self.$showView) {
GetRouteName(onDismiss: {
self.showView = false
self.mapViewModel.saveRoute(coreDM: self.coreDM, routeName: self.routeName)
}, routeName: self.$routeName) //.offset(y: self.showView ? 0 : 1000)
}
} else {
答案 0 :(得分:0)
您不能将.sheet
放在DragGesture().onEnded
闭包中。而是创建一个state属性,并将其与工作表链接。
struct ContentView: View {
@State private var showSheet = false
var body: some View {
MapView(...)
.gesture(
DragGesture()
.onEnded { gesture in
if ((gesture.translation.width >= 50) && (abs(gesture.translation.height) <= 20)) {
print("swipe right detected")
self.showSheet = true
}
}
)
.sheet(isPresented: self.$showSheet) { ... }
}