Методы UIScrollViewDelegate не отвечают на прокрутку табличного представления - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь сделать pull для обновления и бесконечной прокрутки к табличному представлению

Я правильно устанавливаю делегат:

tableView.delegate   = self

Но при прокрутке внутри табличного представления методы прокрутки не реагируют напрокручиваемое действие, например:

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


    if scrollView == self.tableView {

        let currentOffset: Float = Float(scrollView.contentOffset.y)

        if currentOffset < 25 {                
            //refresh content
        }

        let offsetY       = tableView.contentOffset.y
        let contentHeight = tableView.contentSize.height

        if offsetY > contentHeight - scrollView.frame.size.height + 25 {
            // load more
        }

    }

}

Этот случай произошел, когда я изменил конфигурацию сборки схемы на «Release», но когда вернулся к «Debug», он работал правильно.

enter image description here

Моя цель развертывания: 11.0 и XCode версии 10.2 (10E125)

1 Ответ

2 голосов
/ 19 апреля 2019

После долгих поисков может возникнуть проблема с компилятором Swift 5 (я обнаружил похожую ошибку, о которой там сообщалось):

Решение заключается в добавлении @objc к каждому методу:

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

    if scrollView == self.tableView {

        let currentOffset: Float = Float(scrollView.contentOffset.y)

        if currentOffset < 25 {                
            //refresh content
        }

        let offsetY       = tableView.contentOffset.y
        let contentHeight = tableView.contentSize.height

        if offsetY > contentHeight - scrollView.frame.size.height + 25 {
            // load more
        }

    }

}
...