Swift 3.0 Table 查看长按选中的单元格

Swift 3.0 Table View Cell Selected by Long Press

我有一个手势识别器可以关闭我的键盘,但这会妨碍 tableView didSelectAtRow,因为 tableView 无法识别点击,除非是长按。当我在模拟器中 运行 并轻轻点击 tableViewCell 时,它注册为关闭键盘的点击,而不是对 tableView 的点击。但是,如果我在模拟器中点击并按住更长的时间,它将关闭键盘并注册为 tableView 的 didSelectAtRow。这类似于问题UITableView clicked and no cell selected,but long press trigger cell selected,但我不知道如何使用Objective-C。我想知道是否有人可以解决我的问题。我在想是否有办法识别我在 tableView 中点击,gestureRecognizer 会被取消,但我不确定如何继续。

这是我目前的情况:

override func viewDidLoad() {
    super.viewDidLoad()

    searchBar.delegate = self


    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(AddressVC.hideKeyboard))
    tapGesture.cancelsTouchesInView = false
    //searchResultsTableView.addGestureRecognizer(tapGesture)
    self.view.addGestureRecognizer(tapGesture)

}
func hideKeyboard()
    {
    self.view.endEditing(true)
    }

您的单击被手势识别器捕获,没有转发到 tableview。为什么不使用 UITableViewDelegate 的 didSelectCell 函数在选择单元格时关闭键盘?

否则您可能想要实现 UIGestureRecognizerDelegate 并适当地处理这种情况。由于您可能不检查手势识别器触摸是否已启动或结束,因此只要您正在触摸,您的功能就会不断被调用。

因此,当您期望长按只会被触发时,它也会触发。如果你想使用多个手势识别器并且它们不应该一起触发,你可能需要设置另一个识别器的要求(失败)。