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

时间:2018-05-29 10:45:18

标签: ios swift uitableview gesture gmsmapview

我正在使用iOS/Swift 4.0应用创建UITableView,在GMSMapView上说 tableView ,让我们说 mapView 。最初, tableView 不可见,在设置tableView.layer.zPosition = 2后,它在 mapView 前面可见。但是 tableView 没有接收到手势,而是由 mapView 接收到手势。

例如,当我尝试滚动 tableView 时,后台 mapView 正在移动/滚动,但 tableView 为否。当我选择一个单元格时,也不会调用tableView(_:didSelectRowAt:)。我已仔细检查了datasource并且delegate已正确分配,并且在重新加载时未被更改。

我尝试过的事情:

  1. tableView 处于活动状态(基于searchBar状态取消隐藏)时,我使用self.mapView.settings.setAllGesturesEnabled(true)
  2. 禁用 mapView 上的所有手势
  3. 我启用了tableViews,isScrollEnabledisUserInteractionEnabledallowsSelection属性为true
  4. 我已将单元格selectionStyle设为.defaultisUserInteractionEnabled为真
  5. 仍然无法解决问题,我错过的任何一步?

2 个答案:

答案 0 :(得分:1)

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

 mainList.Refreshing += (sender, e) => {
                //...
            };

关于view.insertSubview(tableView, above: mapView); 检查您是否在代码或xib / storyboard中为tableView(_:didSelectRowAt:)设置了delegate属性。

答案 1 :(得分:0)

问题出在不同的方面,我建议任何人都要看下面的步骤

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