我把这个放在了cellForRowAtIndexPath里面。
let longPress = UILongPressGestureRecognizer(target: self, action: #selector(CalorieCountViewController.handleLongPress))
cell.addGestureRecognizer(longPress)
longPress.cancelsTouchesInView = true
let tapPress = UITapGestureRecognizer(target: self, action: #selector(CalorieCountViewController.handleTapPress))
cell.addGestureRecognizer(tapPress)
tapPress.cancelsTouchesInView = true
将下面的代码放在外面,并完全删除didSelectRowAtIndexPath函数,改用indexPathForSelectedRow来获取用户刚刚选择的行。
将下面的代码放在外面,并完全删除didSelectRowAtIndexPath函数,改用indexPathForSelectedRow来获取用户刚刚选择的行。
func handleLongPress(sender: UILongPressGestureRecognizer){
let index = tableView.indexPathForSelectedRow!
doSomething(index)
}
func handleTapPress(sender: UITapGestureRecognizer){
let index = tableView.indexPathForSelectedRow!
doSomethingElse(index)
}
结果发现indexPathForSelectedRow返回nil,但我确实选择了一行,在我的代码中也没有任何"deselectRowAtIndexPath"。