为 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
}
}
我正在尝试构建与 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
}
}