取消选择由UILongPressGestureRecognizer选择的自定义UITableViewCell

时间:2017-08-17 11:40:07

标签: ios iphone swift xcode ios10

我有一个自定义的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)
    }
}

0 个答案:

没有答案