Обнаружить долгое нажатие на просмотр таблицы - PullRequest
0 голосов
/ 07 октября 2018

Я знаю, как просто обнаружить долгое нажатие, но оно обнаруживает после выпуска.Как я могу обнаружить долгое нажатие, не отпуская палец?

Этот код я сейчас использую для длительного нажатия:

override func viewDidLoad() {
    super.viewDidLoad()
    setupLongPressGesture()
}

func setupLongPressGesture() {
    let longPressGesture:UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(self.handleLongPress))
    longPressGesture.minimumPressDuration = 1.0 // 1 second press
    longPressGesture.delegate = self
    self.tableView.addGestureRecognizer(longPressGesture)
}

@objc func handleLongPress(_ gestureRecognizer: UILongPressGestureRecognizer){
    if gestureRecognizer.state == .ended {
        let touchPoint = gestureRecognizer.location(in: self.tableView)
        if let indexPath = tableView.indexPathForRow(at: touchPoint) {

        }
    }
}

1 Ответ

0 голосов
/ 07 октября 2018

Измените .ended на .began.

Из документации для UILongPressGestureRecognizer:

Жесты при длительном нажатии являются непрерывными.Жест начинается (UIGestureRecognizer.State.began), когда количество допустимых пальцев (numberOfTouchesRequired) было нажато в течение указанного периода (minimumPressDuration), и касания не выходят за пределы допустимого диапазона движения (allowableMovement).Распознаватель жестов переходит в состояние «Изменение» при каждом движении пальца и заканчивается (UIGestureRecognizer.State.ended) при поднятии любого пальца.

...