LongPressGestureRecognizer

LongPressGestureRecognizer

我一直试图在我的uitableview上设置一个长的新闻手势识别器。我已经能够让它注册,但它似乎给了我不正确的信息,为相关联的行。我的tableview在正常的点击下工作正常,它通过indexPath.row并且我能够从与该行关联的people数组中获得正确的记录。但是,在使用下面的代码时,indexPath.row似乎不一致,它选择上面和下面的行,然后当滚动时,它在长按时选择随机记录。

func longPress(_ longPressGestureRecognizer: UILongPressGestureRecognizer) {

    if longPressGestureRecognizer.state == UIGestureRecognizerState.began {

        let touchPoint = longPressGestureRecognizer.location(in: self.view)
        if let indexPath = tableView.indexPathForRow(at: touchPoint) {
            let person = people[indexPath.row]
            print("\(person.name)")
            ///////works but erratic responses//////////
        }
    }
}

//// in view did load i have this


    let longPressGesture:UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(PeopleVC.longPress(_:)))
    longPressGesture.minimumPressDuration = 1.0 // 1 second press
    longPressGesture.delegate = self
    self.tableView.addGestureRecognizer(longPressGesture)

最佳答案

更改此:

let touchPoint = longPressGestureRecognizer.location(in: self.view)

对此:
let touchPoint = longPressGestureRecognizer.location(in: self.tableView)

你在你的体内寻找一个手势而不是你的。

10-06 08:25