【问题标题】:tableView(_:didSelectRowAt:) is not called on GMSMapView在 GMSMapView 上未调用 tableView(_:didSelectRowAt:)
【发布时间】:2018-05-29 10:45:17
【问题描述】:

我正在开发一个iOS/Swift 4.0 应用程序,在该应用程序中创建了一个UITableView,可以说是GMSMapView 上的tableView,可以说是mapView。最初tableView 是不可见的,在设置tableView.layer.zPosition = 2 之后,它在mapView 前面是可见的。但是 tableView 不接收手势,而是由 mapView 接收手势。

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

我尝试过的事情:

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

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

【问题讨论】:

    标签: ios swift uitableview gesture gmsmapview


    【解决方案1】:

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

    view.insertSubview(tableView, above: mapView);
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多