【问题标题】:xcode searchBar over google map not working谷歌地图上的xcode searchBar不起作用
【发布时间】:2017-07-22 14:29:00
【问题描述】:

我有一个包含 mapView(谷歌地图)和其他一些控制器的视图。 一个是搜索栏。问题是,如果我将搜索栏放在地图上(使用 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))

正如我之前所说,搜索栏是正确可见的,但我不能在里面写任何东西......

【问题讨论】:

  • 图片没有引起注意,请输入您在此处尝试的代码。

标签: xcode google-maps swift3 searchbar


【解决方案1】:

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

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

添加这一行mapView.gestureRecognizers?.removeAll(),搜索栏会检测到点击它。

【讨论】:

    【解决方案2】:

    为什么要将搜索栏放在地图视图中?将其挖掘到与地图视图相同的级别。其他元素也是。在没有父子依赖关系的情况下,可以使用约束来定位视图。

    【讨论】:

    • 当我在情节提要中移动它们时,Xcode 会自动将它们放在那里...
    • 无论如何按钮都可以正常工作...唯一的问题是搜索栏,我无法理解问题所在。我对按钮和搜索栏都做了同样的事情
    • 所以,试试mapView.superview.addSubview(searchBar)
    • 这样它不会向我显示 searchBar(并且 xcode 告诉我添加 ? 在 superview 之后)
    猜你喜欢
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2016-12-17
    相关资源
    最近更新 更多