只需双击UITableView Swift 3.0

时间:2017-08-25 11:55:04

标签: ios uitableview

我希望我的tableView只对双击进行反应而完全没有对单击进行反应。我目前正在使用以下代码:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(singleTap))
    tapGesture.numberOfTapsRequired = 1
    view.addGestureRecognizer(tapGesture)

    let doubleTapGesture = UITapGestureRecognizer()
    doubleTapGesture.numberOfTapsRequired = 2
    view.addGestureRecognizer(doubleTapGesture)

    tapGesture.require(toFail: doubleTapGesture)

    // implement what to do

    if userInfo[indexPath.row].identifier == "username" {
        editUsername()
    }
}

func singleTap() {
    // DO NOTHING
}

所以基本上我一直在尝试"重定向"单击一个无效的功能。但是,我发现(在模拟器中),tableView有时会对单击做出反应,有时则不然。任何有助于解决此问题的帮助都非常感谢!

1 个答案:

答案 0 :(得分:0)

实现目标:

  1. 在表格视图上添加点按手势识别器,不要忘记设置numberOfTapsRequired = 2
  2. 不要实现didSelectRowAtIndexPath方法
  3. 要防止表格视图单元格在单击后更改其背景颜色,请在界面构建器,属性检查器选项卡,表格视图"选择"中进行设置。属性为"没有选择"或表视图单元"选择"属性为"无"。
  4. 如果你想让单元格的索引路径被双击,你的手势识别器处理程序方法在tap.view中获取tap位置并使用tableView的indexPathForRowAtPoint方法:

    let tapLocationPoint = tap.location(in: tap.view) 
    let tappedCellIndexPath = tableView.indexPathForRow(at: tapLocationPoint)