在表格视图中同时使用轻击手势和长按

时间:2018-12-13 19:15:21

标签: ios swift uitableview uigesturerecognizer

我正在建立表格视图,似乎无法同时使用常规水龙头和长按来工作。

我已将此代码放置在viewDidLoad中:

let longPress = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress))
myTableView.addGestureRecognizer(longPress)

这是我的手势识别器:

@objc func handleLongPress(sender: UILongPressGestureRecognizer){
    if UILongPressGestureRecognizer.state == UIGestureRecognizer.State.began {

        let touchPoint = UILongPressGestureRecognizer.location(in: self.myTableView)
        if let indexPath = self.myTableView.indexPathForRowAtPoint(touchPoint) {
            print(indexPath.row)
        }
    }
}

我在Stack Overflow上找到了这段代码,但是我认为它不是Swift 4的最新版本,因为在构建失败的情况下我什至无法运行它。

1 个答案:

答案 0 :(得分:2)

UILongPressGestureRecognizer.state应该是sender.state,而UILongPressGesutreRecognizer.location应该是sender.location。此外,indexPathForRowAtPoint()的签名已更新为indexPathForRow(at:)

正确的代码:

@objc func handleLongPress(sender: UILongPressGestureRecognizer) {
    if sender.state == .began {
        let touchPoint = sender.location(in: self.myTableView)
        if let indexPath = self.myTableView.indexPathForRow(at:touchPoint) {
            print(indexPath.row)
        }
    }
}

UILongPressGestureRecognizer是一个类名,您需要调用该类实例。