如何检测UITableView上的触摸,到目前为止似乎没有任何工作?

Pau*_*aul 1 touch uitableview ios swift

如何检测触摸UITableView?我试过这个帖子中的解决方案.我有我的tableViewscrollView在同UIViewController一个约束,所以它是复杂的子类tableView.
触摸方法不会被调用:

class ViewController: UIViewController, UIScrollViewDelegate, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var verticalSpacing: NSLayoutConstraint!
    @IBOutlet weak var scrollView: UIScrollView!
    @IBOutlet weak var tableView: UITableView!


override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    super.touchesBegan(touches, withEvent: event)
    println("touch began")
}
override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {
    super.touchesMoved(touches, withEvent: event)
}
override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
    super.touchesEnded(touches, withEvent: event)
    println("touch ended")
}
override func touchesCancelled(touches: NSSet!, withEvent event: UIEvent!) {
    super.touchesCancelled(touches, withEvent: event)
}
Run Code Online (Sandbox Code Playgroud)

我补充说:

tableView.userInteractionEnabled = true
tableView.canCancelContentTouches = false //or true is the same
Run Code Online (Sandbox Code Playgroud)

但它没有改变任何东西.它scrollView与...同时可见tableView,但它们不重叠.

小智 9

不需要子类化!

只需添加一个手势识别器,并确保包含一个呼叫 cancelsTouchesInView

这是Swift版本:

override func viewDidLoad() {
    super.viewDidLoad()
    view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "handleTap:"))
}

func handleTap(sender: UITapGestureRecognizer) {
    if sender.state == .Ended {
        // Do your thang here!
    }
    sender.cancelsTouchesInView = false
}
Run Code Online (Sandbox Code Playgroud)

请享用!