首页 > 解决方案 > SwiftUI 按钮操作不适用于 GMSMapView

问题描述

我试图让我自己的自定义按钮漂浮在 GMSMapView 上。按钮在 GMSMapView 上绘制,但未触发按钮操作。浮动按钮是用 SwiftUI 编写的,就是这样:

struct MyLocationView: View {
    @ObservedObject var viewController: ViewController

    var body: some View {
        ZStack {
            Button(action: {
                print("Hello")
                self.viewController.myLocationButtonPressed = !self.viewController.myLocationButtonPressed
            }) {
                ZStack {
                    Circle()
                        .foregroundColor(.black)
                        .frame(width: 60, height: 60)
                        .shadow(radius: 10)
                    Image(systemName: viewController.myLocationButtonPressed ? "location.fill" : "location")
                        .foregroundColor(.blue)
                }
            }
        }
    }
}

这是我的视图控制器

import UIKit
import SwiftUI
import GoogleMaps

class ViewController: UIViewController, ObservableObject {
    @Published var myLocationButtonPressed: Bool = false
    @IBOutlet var mapView: GMSMapView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // My Location Button
        let myLocationView = MyLocationView(viewController: self)
        let hostingController = UIHostingController(rootView: myLocationView)
        hostingController.view.backgroundColor = .blue
        addChild(hostingController)
        hostingController.view.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(hostingController.view)
        hostingController.didMove(toParent: self)

        NSLayoutConstraint.activate([
            hostingController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            hostingController.view.topAnchor.constraint(equalTo: view.topAnchor),
            hostingController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            hostingController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor)
        ])
    }
}

知道为什么按钮操作在这里不起作用吗?

标签: swiftuigoogle-maps-sdk-iosgmsmapview

解决方案


推荐阅读