override func viewDidLoad() { super.viewDidLoad() let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.dismissKeyboard (_:))) self.view.addGestureRecognizer(tapGesture) } @objc func dismissKeyboard (_ sender: UITapGestureRecognizer) { if let view = self.view { view.endEditing(true) } }
但是,现在当我尝试实现表格视图的
didSelectRowAt
方法时,由于上面代码中定义的UITapGestureRecognizer
捕获了触摸事件,因此它不起作用。理想情况下,我希望tableview触摸优先于以上代码,以便当用户触摸tableView时,调用didSelectRowAt
,但是在用户触摸屏幕上其他任何地方时,都调用dismissKeyboard
。
我正在实现一个搜索控制器,顶部带有一个搜索栏,而下方带有一个显示视图的表格视图。我添加了以下代码,以便在用户点击屏幕时,......>
实现UIGestureRecognizerDelegate
,如果触摸在tableView上,则使用return false。