GMSMapView 上未调用 tableView(_:didSelectRowAt:)

tableView(_:didSelectRowAt:) is not called on GMSMapView

我正在开发一个 iOS/Swift 4.0 应用程序,我在其中创建了一个 UITableView,比方说 tableViewGMSMapView 上,比方说 地图视图。最初 tableView 不可见,设置 tableView.layer.zPosition = 2 后,它在 mapView 前面可见。但是 tableView 没有接收到手势,而是由 mapView 接收到。

例如,当我尝试滚动 tableView 时,背景 mapView 是 moving/scrolling 但 tableView 不是。当我选择一个单元格时, tableView(_:didSelectRowAt:) 也不会被调用。我已经仔细检查了 datasourcedelegate 是否正确分配并且在重新加载时没有被更改。

我尝试过的东西:

  1. tableView 处于活动状态(根据 searchBar 状态取消隐藏)时,我禁用了 mapView 上的所有手势 self.mapView.settings.setAllGesturesEnabled(true)
  2. 我启用了 tableViews,isScrollEnabledisUserInteractionEnabledallowsSelection 属性 true
  3. 我已将单元格 selectionStyle 设置为 .defaultisUserInteractionEnabled 为 true

仍然无法解决问题,是否缺少任何步骤?

向上移动图层并不意味着您将整个视图向上移动。试试这个:

view.insertSubview(tableView, above: mapView);

关于 tableView(_:didSelectRowAt:) 检查您是否在代码或 xib/storyboard.

中为 UITableView 设置了 delegate 属性

问题出在不同的方面,我建议大家看下面的步骤

  1. 确保 tableView 在 mapView 的前面,如果它是在 xcode 中静态创建的
  2. 如果 tableView 是以编程方式创建的,请确保使用 self.view.bringSubview(toFront: tableView) 将其置于最前面
  3. 确保 tableView 容器的大小完全覆盖内部 tableView 的全部大小
  4. 已启用 tableView,isScrollEnabled, isUserInteractionEnabled, allowsSelection 属性