Swift TableView конфликтует с UIPanGestureRecognizer - PullRequest
0 голосов
/ 27 сентября 2019

Я проверяю все решения, но не нашел и сопоставляю дело для себя.У меня tableView с ячейками.В некоторых ячейках также есть TableView с разделом заголовка и ячейками.Раньше я добавлял UIPanGestureRecognizer в headerSerction, чтобы добавить вид слайдов (удалить ячейку и т. Д.). По некоторым причинам я не смог добавить еще одну строку для реализации основных методов.Проблема теперь, когда я прокручиваю основной TableView, приоритет устанавливает, чтобы провести горизонтальные представления внутри ячеек (внутренние разделы tableView содержат UIPanGestureRecognizer).Как я могу это исправить?

Раздел заголовка содержит:

func setupGesture(){
    let gesture = UIPanGestureRecognizer(target: self, action: #selector(wasDragged(_:)))
    gesture.cancelsTouchesInView = false
    contentsView.addGestureRecognizer(gesture)
    contentsView.isUserInteractionEnabled = true
    gesture.delegate = self
}

также, перетащите действие:

@objc
func wasDragged(_ gestureRecognizer: UIPanGestureRecognizer) {
    if gestureRecognizer.state == UIGestureRecognizerState.began || gestureRecognizer.state == UIGestureRecognizerState.changed {
        let translation = gestureRecognizer.translation(in: self.contentsView)
        print(gestureRecognizer.view!.frame.minX)
        if(gestureRecognizer.view!.frame.minX < 80) || (gestureRecognizer.view!.frame.minX > -160){
            gestureRecognizer.view!.center = CGPoint(x: gestureRecognizer.view!.center.x + translation.x, y: gestureRecognizer.view!.center.y)
        }else {
            gestureRecognizer.view!.center = CGPoint(x: 160, y: 0)
        }

        gestureRecognizer.setTranslation(CGPoint(x: 0, y: 0), in: self.contentsView)
    }else{

        if(gestureRecognizer.view!.frame.minX <= 40) && (gestureRecognizer.view!.frame.minX >= 0){
            UIView.animate(withDuration: 0.3, delay: 0.0, options: [.allowUserInteraction], animations: {
                gestureRecognizer.view!.center = CGPoint(x: (self.contentsView.frame.width / 2), y: gestureRecognizer.view!.center.y)
            })
        }else if(gestureRecognizer.view!.frame.minX >= 40) && (gestureRecognizer.view!.frame.minX >= 0){
            UIView.animate(withDuration: 0.3, delay: 0.0, options: [.allowUserInteraction], animations: {
                gestureRecognizer.view!.center = CGPoint(x: (self.contentsView.frame.width / 2) + 80, y: gestureRecognizer.view!.center.y)
            })
        }else if(gestureRecognizer.view!.frame.minX >= -40) && (gestureRecognizer.view!.frame.minX <= 0){
            UIView.animate(withDuration: 0.3, delay: 0.0, options: [.allowUserInteraction], animations: {
                gestureRecognizer.view!.center = CGPoint(x: (self.contentsView.frame.width / 2), y: gestureRecognizer.view!.center.y)
            })
        }else if(gestureRecognizer.view!.frame.minX <= -40) && (gestureRecognizer.view!.frame.minX >= -80){
            UIView.animate(withDuration: 0.3, delay: 0.0, options: [.allowUserInteraction], animations: {
                gestureRecognizer.view!.center = CGPoint(x: (self.contentsView.frame.width / 2) - 80, y: gestureRecognizer.view!.center.y)
            })
        }else if(gestureRecognizer.view!.frame.minX <= -80) && (gestureRecognizer.view!.frame.minX >= -120){
            UIView.animate(withDuration: 0.3, delay: 0.0, options: [.allowUserInteraction], animations: {
                gestureRecognizer.view!.center = CGPoint(x: (self.contentsView.frame.width / 2) - 80, y: gestureRecognizer.view!.center.y)
            })
        }else if(gestureRecognizer.view!.frame.minX <= -120) && (gestureRecognizer.view!.frame.minX <= 0){
            UIView.animate(withDuration: 0.3, delay: 0.0, options: [.allowUserInteraction], animations: {
                gestureRecognizer.view!.center = CGPoint(x: (self.contentsView.frame.width / 2) - 160, y: gestureRecognizer.view!.center.y)
            })
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...