一般点击事件大家首先都想到用重写touch函数来实现,一般在viewController中实现这个方法,点击背景时,这个方法就会执行,于是在tableviewController我们认为tableviewController下的tableview也会执行这个方法,其实不然,因为tableviewController也是由viewController封装而成,所以真正执行touchsBegan的还是这个viewController下的view。
通过touch点击函数不能实现,于是我们可以选用Tap手势来实现,代码如下
let tap = UITapGestureRecognizer(target: self, action: #selector(self.cancelFocus))
self.tableView.addGestureRecognizer(tap)
tap.delegate = self
记得让controller遵循UIGestureRecognizerDelegate
,然后在后面实现函数
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
if touch.view is UITableView {
return true
}
return false
}
这样我们就能实现在tableView上点击空白来进行我们想要的操作同事又不会影响对cell的点击。