Задержка действия - PullRequest
       13

Задержка действия

0 голосов
/ 04 февраля 2019

Я добавил в свое приложение действие смахивания.У меня есть 5 кнопок, которые представляют дни недели.Когда я нажимаю на одну кнопку, это меняет массив моего табличного представления и некоторые вещи.Действие «Размах» действует точно так же и прекрасно работает, но при пролистывании иногда оно останавливается и снова работает через несколько секунд.это время ожидания.

override func viewDidLoad() {
    super.viewDidLoad()

    let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(actionSwipeRight))
    rightSwipe.direction = .right

    let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector(actionSwipeLeft))
    leftSwipe.direction = .left

    view.addGestureRecognizer(rightSwipe)
    view.addGestureRecognizer(leftSwipe)
}

И код прокрутки

// s'éxécute lorsque qu'un swipe vers la droite est effectué
@objc private func actionSwipeRight() {
    print("swipe right")

    switch self.selectedDayinHoraire {
        case "LUNDI" :
            return
        case "MARDI" :
            changeDay(for: "LUNDI")
        case "MERCREDI" :
           changeDay(for: "MARDI")
        case "JEUDI" :
            changeDay(for: "MERCREDI")
        case "VENDREDI" :
            changeDay(for: "JEUDI")
        default: break
    }
}

// s'éxécute lorsque qu'un swipe vers la gauche est effectué
@objc private func actionSwipeLeft() {
    print("swipe left")

    switch self.selectedDayinHoraire {
        case "LUNDI" :
           changeDay(for: "MARDI")
        case "MARDI" :
           changeDay(for: "MERCREDI")
        case "MERCREDI" :
            changeDay(for: "JEUDI")
        case "JEUDI" :
            changeDay(for: "VENDREDI")
        case "VENDREDI" :
            return
        default: break
    }
}

func changeDay(for day : String) {
    switch day {
        case "LUNDI" :
                self.menuSelectionné(btn: self.btnLundi)
                self.LabelDynamiqueJour.text = " horaire du lundi"
                self.selectedDayinHoraire = "LUNDI"
        case "MARDI" :
                self.menuSelectionné(btn: self.btnMardi)
                self.LabelDynamiqueJour.text = " horaire du Mardi"
                self.selectedDayinHoraire = "MARDI"
        case "MERCREDI" :
                self.menuSelectionné(btn: self.btnMercredi)
                self.LabelDynamiqueJour.text = " horaire du Mercredi"
                self.selectedDayinHoraire = "MERCREDI"
        case "JEUDI" :
                self.menuSelectionné(btn: self.btnJeudi)
                self.LabelDynamiqueJour.text = " horaire du Jeudi"
                self.selectedDayinHoraire = "JEUDI"
        case "VENDREDI" :
                self.menuSelectionné(btn: self.btnVendredi)
                self.LabelDynamiqueJour.text = " horaire du vendredi"
                self.selectedDayinHoraire = "VENDREDI"
        default: break
    }
    tableviewHoraire.reloadData()
}

Действия кнопок:

@IBAction func btnLun(_ sender: UIButton) {
    changeDay(for: "LUNDI")
}

@IBAction func btnMar(_ sender: UIButton) {
   changeDay(for: "MARDI")
}

@IBAction func btnMer(_ sender: UIButton) {
   changeDay(for: "MERCREDI")
}

@IBAction func btnJeu(_ sender: UIButton) {
   changeDay(for: "JEUDI")
}

@IBAction func btnVen(_ sender: UIButton) {
   changeDay(for: "VENDREDI")
}

Вы можете видеть, что действие прокрутки делает то же самое, но иногда оно зависаетПроверьте сами, если хотите, проблема исходит от представления Horaire.https://github.com/CedricLnx/School-Companion

1 Ответ

0 голосов
/ 05 февраля 2019

Установите свой класс Horaire как подкласс UIGestureRecognizerDelegate.

class Horaire: ViewController, UITableViewDataSource, UITableViewDelegate, UIGestureRecognizerDelegate {

Установите для каждого делегата Swipe значение.

    let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(actionSwipeRight))
    rightSwipe.direction = .right
    rightSwipe.delegate = self

    let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector(actionSwipeLeft))
    leftSwipe.direction = .left
    leftSwipe.delegate = self

Добавьте функцию UIGestureRecognizerDelegate.

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    return true
}

Как объяснено в Apple Docs следует распознавать одновременно, позволяет двум и более жестам работать одновременно.В этом случае он должен позволять регистрировать одно касание в качестве пролистывания как в self.view, так и в tableView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...