swiftui - 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)
])
}
}
知道为什么按钮操作在这里不起作用吗?
解决方案
推荐阅读
- curl - 在 Debian 上连接到 Kong 时出现连接被拒绝错误
- vba - 3 by 3数据集如何排副单元格显示
- codeigniter - 电子邮件的表单验证不是 100%
- javascript - Django - 挑战和响应场景(创建随机字符串并由客户端签名,以便它签入服务器)
- unit-testing - Vue 测试报告器显示预期的抛出错误
- javascript - 如何使用自定义表单数据在某些网站中自动提交 JavaScript Web 表单?
- ios - 在不同的开发者帐户中重新上传应用程序
- json - Nodejs-Mongodb-native 子文档过滤器无法正常工作
- google-analytics - Google Analytics(分析)正在捕获异常流量
- android - imageview 中的图像获取背景颜色