xcode searchBar over google map无法正常工作

时间:2017-07-22 14:29:00

标签: xcode google-maps swift3 searchbar

我有一个包含mapView(谷歌地图)和其他一些控制器的视图。 一个是searchBar。问题是,如果我将搜索栏放在地图上(使用addSubView),当我尝试在搜索栏内单击时,没有任何内容......我是xcode和swift的新手,我无法弄清楚哪个是问题。

This is the hierarchy of the controllers

然后,在viewDidLoad中我做了“mapView.addSubView(searchBar),...”

As result I can see the searchBar but if I click inside, it doesn't work (is not responding and I can't write anything to search

我做错了什么?

编辑:

@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))

正如我之前所说,搜索栏正确可见,但我无法在其中写任何内容......

2 个答案:

答案 0 :(得分:1)

搜索栏无法正常工作,因为它无法检测到触摸,因为GMSMapView的手势识别器不会让搜索栏成为第一个响应者。

因此,一种解决方案是删除gmsmapView的gestureRecognisers,然后搜索栏将开始检测触摸。

添加此行mapView.gestureRecognizers?.removeAll(),搜索栏会检测到它的点击次数。

答案 1 :(得分:0)

为什么要在地图视图中放置搜索栏?将其挖掘到与地图视图相同的级别。其他元素也是。可以使用约束来定位视图,而不需要这样的父子依赖。