Ios 如何在SwiftUI中向MapView添加手势

Ios 如何在SwiftUI中向MapView添加手势,ios,swiftui,gesture,Ios,Swiftui,Gesture,我试图在ContentView.swift中将手势(点击、滑动等)添加到Mapkit地图视图中,但没有效果。我从谷歌地图开始,然后尝试Mapkit。我知道有两种方法可以向视图中添加手势 向mapView添加手势,如下所示: 在MapView视图中添加手势,如下所示: 这两种方法似乎都不管用。我更喜欢的方式是#1,但我尝试了另一种方式,如#2。你知道我做错了什么吗?我正在使用Xcode 11.4(11E146)。谢谢 我认为答案是你不能在地图视图中添加手势。我可以在地图的顶部添加一个覆盖图,如果点

我试图在ContentView.swift中将手势(点击、滑动等)添加到Mapkit地图视图中,但没有效果。我从谷歌地图开始,然后尝试Mapkit。我知道有两种方法可以向视图中添加手势

  • 向mapView添加手势,如下所示:
  • 在MapView视图中添加手势,如下所示:

  • 这两种方法似乎都不管用。我更喜欢的方式是#1,但我尝试了另一种方式,如#2。你知道我做错了什么吗?我正在使用Xcode 11.4(11E146)。谢谢

    我认为答案是你不能在地图视图中添加手势。我可以在地图的顶部添加一个覆盖图,如果点击覆盖图区域,手势也会起作用。我发现这很有效!
    import SwiftUI
    
    struct ContentView: View {
        var body: some View {
    
                MapView()
                .onTapGesture(count: 2) {
                    print("Double tapped!")
                }
                .edgesIgnoringSafeArea(.all)
        }
    
    struct MapView: UIViewRepresentable {
    
        func makeUIView(context: Context) -> MKMapView {
            let mapView = MKMapView()
            mapView.delegate = context.coordinator
            let tap = UITapGestureRecognizer(target: context.coordinator, action: #selector(Coordinator.doubleTapped))
            tap.numberOfTapsRequired = 2
            mapView.addGestureRecognizer(tap)
            return mapView
        }
    
        func updateUIView(_ view: MKMapView, context: Context) {
    
        }
    
        func makeCoordinator() -> Coordinator {
            Coordinator(self)
        }
    
        class Coordinator: NSObject, MKMapViewDelegate {
            var parent: MapView
    
            init(_ parent: MapView) {
                self.parent = parent
            }
    
            @objc func doubleTapped() {
                print("Double Tapped...")
            }
        }
    }