我有一个包含mapView(谷歌地图)和其他一些控制器的视图。 一个是searchBar。问题是,如果我将搜索栏放在地图上(使用addSubView),当我尝试在搜索栏内单击时,没有任何内容......我是xcode和swift的新手,我无法弄清楚哪个是问题。
This is the hierarchy of the controllers
然后,在viewDidLoad中我做了“mapView.addSubView(searchBar),...”
我做错了什么?
编辑:
@IBOutlet weak var searchBar: UISearchBar!
@IBOutlet weak var mapView: GMSMapView!
@IBOutlet weak var advSearchButton: UIButton!
@IBOutlet weak var logoIcon: UIImageView!
@IBOutlet weak var trafficButton: UIButton!
@IBOutlet weak var satelliteButton: UIButton!
@IBOutlet weak var zoomInButton: UIButton!
@IBOutlet weak var zoomOutButton: UIButton!
这是我在viewDidLoad中所做的:
mapView.addSubview(zoomInButton)
mapView.addSubview(zoomOutButton)
mapView.addSubview(trafficButton)
mapView.addSubview(satelliteButton)
mapView.addSubview(searchBar)
mapView.addSubview(advSearchButton)
mapView.addSubview(logoIcon)
mapView.moveCamera(GMSCameraUpdate.setCamera(camera))
正如我之前所说,搜索栏正确可见,但我无法在其中写任何内容......
答案 0 :(得分:1)
搜索栏无法正常工作,因为它无法检测到触摸,因为GMSMapView的手势识别器不会让搜索栏成为第一个响应者。
因此,一种解决方案是删除gmsmapView的gestureRecognisers,然后搜索栏将开始检测触摸。
添加此行mapView.gestureRecognizers?.removeAll()
,搜索栏会检测到它的点击次数。
答案 1 :(得分:0)
为什么要在地图视图中放置搜索栏?将其挖掘到与地图视图相同的级别。其他元素也是。可以使用约束来定位视图,而不需要这样的父子依赖。