GMSMapView 上未调用 tableView(_:didSelectRowAt:)
tableView(_:didSelectRowAt:) is not called on GMSMapView
我正在开发一个 iOS/Swift 4.0
应用程序,我在其中创建了一个 UITableView
,比方说 tableView 在 GMSMapView
上,比方说 地图视图。最初 tableView 不可见,设置 tableView.layer.zPosition = 2
后,它在 mapView 前面可见。但是 tableView 没有接收到手势,而是由 mapView 接收到。
例如,当我尝试滚动 tableView 时,背景 mapView 是 moving/scrolling 但 tableView 不是。当我选择一个单元格时, tableView(_:didSelectRowAt:)
也不会被调用。我已经仔细检查了 datasource
和 delegate
是否正确分配并且在重新加载时没有被更改。
我尝试过的东西:
- 当 tableView 处于活动状态(根据
searchBar
状态取消隐藏)时,我禁用了 mapView 上的所有手势 self.mapView.settings.setAllGesturesEnabled(true)
- 我启用了 tableViews,
isScrollEnabled
,isUserInteractionEnabled
,allowsSelection
属性 true
- 我已将单元格
selectionStyle
设置为 .default
,isUserInteractionEnabled
为 true
仍然无法解决问题,是否缺少任何步骤?
向上移动图层并不意味着您将整个视图向上移动。试试这个:
view.insertSubview(tableView, above: mapView);
关于 tableView(_:didSelectRowAt:)
检查您是否在代码或 xib/storyboard.
中为 UITableView
设置了 delegate
属性
问题出在不同的方面,我建议大家看下面的步骤
- 确保
tableView
在 mapView 的前面,如果它是在 xcode 中静态创建的
- 如果
tableView
是以编程方式创建的,请确保使用 self.view.bringSubview(toFront: tableView)
将其置于最前面
- 确保 tableView 容器的大小完全覆盖内部 tableView 的全部大小
- 已启用 tableView,
isScrollEnabled, isUserInteractionEnabled, allowsSelection
属性
我正在开发一个 iOS/Swift 4.0
应用程序,我在其中创建了一个 UITableView
,比方说 tableView 在 GMSMapView
上,比方说 地图视图。最初 tableView 不可见,设置 tableView.layer.zPosition = 2
后,它在 mapView 前面可见。但是 tableView 没有接收到手势,而是由 mapView 接收到。
例如,当我尝试滚动 tableView 时,背景 mapView 是 moving/scrolling 但 tableView 不是。当我选择一个单元格时, tableView(_:didSelectRowAt:)
也不会被调用。我已经仔细检查了 datasource
和 delegate
是否正确分配并且在重新加载时没有被更改。
我尝试过的东西:
- 当 tableView 处于活动状态(根据
searchBar
状态取消隐藏)时,我禁用了 mapView 上的所有手势self.mapView.settings.setAllGesturesEnabled(true)
- 我启用了 tableViews,
isScrollEnabled
,isUserInteractionEnabled
,allowsSelection
属性 true - 我已将单元格
selectionStyle
设置为.default
,isUserInteractionEnabled
为 true
仍然无法解决问题,是否缺少任何步骤?
向上移动图层并不意味着您将整个视图向上移动。试试这个:
view.insertSubview(tableView, above: mapView);
关于 tableView(_:didSelectRowAt:)
检查您是否在代码或 xib/storyboard.
UITableView
设置了 delegate
属性
问题出在不同的方面,我建议大家看下面的步骤
- 确保
tableView
在 mapView 的前面,如果它是在 xcode 中静态创建的 - 如果
tableView
是以编程方式创建的,请确保使用self.view.bringSubview(toFront: tableView)
将其置于最前面 - 确保 tableView 容器的大小完全覆盖内部 tableView 的全部大小
- 已启用 tableView,
isScrollEnabled, isUserInteractionEnabled, allowsSelection
属性