Swift - событие прокрутки UITableView - программирование

Swift - событие прокрутки UITableView

Мне было интересно, как определить, прокручивается ли UITableView (вверх или вниз). Я хочу скрыть клавиатуру, когда UITableView прокручивается с помощью self.view.endEditing(true).

Заранее спасибо

4b9b3361

Ответ 1

Вы можете добавить UIScrollViewDelegate. После этого вы можете реализовать метод scrollViewDidScroll.

Ответ 2

Вы можете установить свойство UITable view (XCode 7 +)

В раскадровке:
In Storyboard

в коде:

tableView.keyboardDismissMode = .onDrag

Ответ 3

override func scrollViewWillEndDragging(scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

        if(velocity.y>0){
            NSLog("dragging Up");
        }else{
            NSLog("dragging Down");
        }
    }

Ответ 4

Я считаю, что полное решение будет следующим:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView == feedTableView {
        let contentOffset = scrollView.contentOffset.y
        print("contentOffset: ", contentOffset)
        if (contentOffset > self.lastKnowContentOfsset) {
            print("scrolling Down")
            print("dragging Up")
        } else {
            print("scrolling Up")
            print("dragging Down")
        }
    }
}

func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
    if scrollView == feedTableView {
        self.lastKnowContentOfsset = scrollView.contentOffset.y
        print("lastKnowContentOfsset: ", scrollView.contentOffset.y)
    }
}

Предыдущие ответы не были на 100% точными.

Объяснение: scrollViewDidEndDragging вызывается, когда прокрутка останавливается, поэтому мы сохраняем последнее знаковое смещение. После этого мы сравниваем его с текущим смещением в методе делегата scrollViewDidScroll.