我有一个自定义的UITableViewCell类My custom UITableViewCell 如果用户想要选择第一个单元格,则在选择该单元格后调用UILongPressGestureRecognizer,并且当用户已经选择了最小的一个单元格时,他可以选择另一个单元格而不需要长按,只需调用函数didSelectRow。我试过自己做,但我做不到。它实际上是工作但是长按选择的第一个用户,无法取消选择。我搜索并发现我应该取消视图,但它对我不起作用。因此使用didSelectRow调用的单元格正常工作,我可以选择和取消选择,但UILongPressGesture选择的单元格除外。
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let cell = tableView.cellForRow(at: indexPath) as? ContactCell {
if inSelectionMode {
selectUser(cell: cell, indexPath: indexPath)
} else {
if let cameraViewControl = presentingViewController as? CameraViewController {
cameraViewControl.smallView()
}
dismiss(animated: true, completion: nil)
}
}
}
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
if tableView == contactTblView {
let tap = UILongPressGestureRecognizer(target: self, action: #selector(longTapSelectUser(_:)))
tap.cancelsTouchesInView = false
cell.addGestureRecognizer(tap)
}
}
func longTapSelectUser(_ gesture: UILongPressGestureRecognizer) {
if let cell = gesture.view as? ContactCell, let indexPath = self.contactTblView.indexPath(for: cell) {
inSelectionMode = true
selectUser(cell: cell, indexPath: indexPath)
}
}