UITableView можно перетаскивать вверх и вниз, не позволяя жестом смахивания?

Я новичок в Swift и пытаюсь добавить распознаватель жестов в своем UIView. Я вставил градиент CALayer в индекс 0, чтобы иметь градиентный фон.

Моя проблема:

Жесты смахивания вправо и влево отлично работают, но для нажатия вниз не работает, почему?

2 ответа

Решение

Установите делегат жестов смахивания, которые вы добавляете в представление.

let swipeGesture = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipe:"))
swipeGesture.delegate = self
self.view.addGestureRecognizer(swipeGesture)
self.mySwipeGesture = swipeGesture

GestureRecognizerDelegate спрашивает, следует ли разрешить двум распознавателям жестов распознавать жесты одновременно. Вернуть true разрешить и gestRecognizer, и otherGestureRecognizer одновременно распознавать их жесты. Реализация по умолчанию возвращает false- два жеста не могут быть распознаны одновременно. Реализуйте следующий делегат для достижения этой цели.

extension ViewController : UIGestureRecognizerDelegate {
  func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
    //Identify gesture recognizer and return true else false.
    return gestureRecognizer.isEqual(self.mySwipeGesture) ? true : false
  }
}

Проведение пальцем вверх и вниз - свойство по умолчанию для табличного представления. Я бы посоветовал вам отключить прокрутку табличного представления всякий раз, когда вы хотите что-то сделать с оверлеем.

tableView.scrollEnabled = NO;

Если вы выполняете перетаскивание определенной ячейки, нажмите и удерживайте ее, а затем начните перетаскивание.

Вот как вы можете достичь этого.

Надеюсь это поможет.

Другие вопросы по тегам