pangesture в UItableviewcell, прокрутка таблицы не работает в swift
Я хочу провести UIview влево и вправо внутри UItableviewCell, и я использовал UIPanGestureRecognizer, чтобы это произошло, и ниже приведен прилагаемый исходный код. Однако, когда я пытаюсь прокрутить UItableview, мой Uiview может перемещаться вверх и вниз и не может прокрутить UItableviewcell, то есть Superview. Может кто-нибудь сказать мне, как управлять? Заранее спасибо?
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "CardSwipeTVCell") as! CardSwipeTVCell
let tapGesture : UIPanGestureRecognizer!
tapGesture = UIPanGestureRecognizer(target: self, action: #selector(ViewController.tapEdit(_:)))
cell.cardView.addGestureRecognizer(tapGesture!)
cell.cardView.tag = indexPath.row
tapGesture!.delegate = self
cell.selectionStyle = .none
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
}
func tapEdit(_ recognizer: UIPanGestureRecognizer)
{
print(recognizer.view?.tag as Any)
let sender = recognizer.view?.tag as Any
let indexPath = IndexPath(row: sender as! Int, section: 0)
let cell = self.cardTableView.cellForRow(at: indexPath) as? CardSwipeTVCell
cell?.cardView.backgroundColor = UIColor.black
let card = recognizer.view!
let point = recognizer.translation(in: view)
card.center = CGPoint(x: (cell?.center.x)! + point.x, y: (cell?.center.y)! + point.y)
if recognizer.state == UIGestureRecognizerState.ended
{
UIView.animate(withDuration: 0.3, animations: {
card.center = (cell?.center)!
})
}
}
Еще одна проблема - когда я нажимаю на вторую ячейку, мой вид исчезает? Ваша помощь будет по достоинству оценена.
1 ответ
override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
if let panGestureRecognizer = gestureRecognizer as? UIPanGestureRecognizer {
//let translation = panGestureRecognizer.translation(in: superview!)
let translation = panGestureRecognizer.translationInView(superview)
if fabs(translation.x) > fabs(translation.y) {
return true
}
return false
}
return false
}
Добавьте приведенный выше метод делегата в ваш класс. что остановит пангестуру при вертикальной прокрутке табличного представления.