为 table header 视图禁用手势

Disable gestures for table header view

我正在尝试构建与 GMSPlacePicker 类似的控制器。 我在背景上有地图视图,然后是 Table 具有透明 header 视图的视图。问题是 header 视图中的所有手势(点击、平移)都传递给 table 视图。我想禁用它们,所以所有触摸都会直接转到地图视图。

我可以做到如果我设置:

tableView.userInteractionEnabled = false

但现在我无法滚动 table 视图。

问题是如何仅针对 header 视图禁用所有手势,但继续为 table 视图获取它们。

基本上我想要得到以下行为:https://youtu.be/iSBbEZXDyGg

您需要将地图放在页眉视图中。不在后面。

诀窍是创建 UITableView 的子类并覆盖

func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView?

ANTableView.swift

import UIKit

class ANTableView: UITableView
{
    override func hitTest(point: CGPoint, withEvent event: UIEvent?) -> UIView?
    {
        let headerViewFrame = tableHeaderView!.convertRect(tableHeaderView!.frame, toView: self)

        if CGRectContainsPoint(headerViewFrame, point) {
            return nil
        }

        return self
    }
}