【发布时间】:2016-06-12 02:44:49
【问题描述】:
我把它放在 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 来获取刚刚选择的行用户。
func handleLongPress(sender: UILongPressGestureRecognizer){
let index = tableView.indexPathForSelectedRow!
doSomething(index)
}
func handleTapPress(sender: UITapGestureRecognizer){
let index = tableView.indexPathForSelectedRow!
doSomethingElse(index)
}
原来 indexPathForSelectedRow 返回 nil,但我确实选择了一行,而且我的代码中没有“deselectRowAtIndexPath”。
【问题讨论】:
-
只在 UITableViewCell 上添加长按手势,点击可以使用 UITableView 的“didSelectRowAtIndexPath”委托方法
标签: ios swift swift2 uigesturerecognizer