ScrollViewDelegate不调用scrollViewDidScroll或scrollViewWillBeginDragging

时间:2018-01-31 17:54:34

标签: ios swift uitableview uiscrollview uiscrollviewdelegate

我已经从iOS tableview how can I check if it is scrolling up or down获得了解决方案,回答了如何测试用户是否向上或向下滚动并已实现到我的代码中。在第一个带有UITableView的viewcontroller中,这段代码运行得非常好,但对于另一个类似UITableView的代码,这不起作用。我已经检查过我可能犯过的任何错误,例如在不同的函数中意外引用这些错误,或者在定义我的类时没有引用UIScrollViewDelegate,但根据解决方案,这不是必需的“UITableViewDelegate”已经是UIScrollViewDelegate的子类。“

这是我应该调用的代码,但它没有(我计划根据用户向上或向下移动来动画视图控制器上的某些组件):

var lastContentOffset: CGFloat = 0

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
    self.lastContentOffset = scrollView.contentOffset.y
}

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if (self.lastContentOffset < scrollView.contentOffset.y) {
        UIView.animate(withDuration: 0.2, animations: { () -> Void in
            self.listTableView.frame = CGRect(x:0 ,y: 36,width: self.view.bounds.width,height: self.view.bounds.height - 36)
        })



    } else if (self.lastContentOffset > scrollView.contentOffset.y) {
        UIView.animate(withDuration: 0.2, animations: { () -> Void in
            self.listTableView.frame = CGRect(x:0 ,y: 131,width: self.view.bounds.width,height: self.view.bounds.height - 131)               
        })

    } else {

    }
}

到目前为止,我已经尝试打印一个文本,只是为了看看它是否只是我的动画错误,但没有任何反应。以下是有关其余代码的更多背景信息:

  1. 我确实为viewController中的另一个功能实现了两个UISwipeGestures和一个UITapGesture

  2. 我在此代码之前定义并设置了tableView,但这不应该有所作为

  3. 我的tableView收集的信息是通过一些Web请求,这需要很长时间但仍有一段时间 - 我已经为它编写了一个函数

  4. 有时,blurViewController和ContainerViewController完全覆盖tableView,但我已经开发了一个代码,可以根据请求将这些设置为后台,以免影响tableView的功能

  5. 这不是UITableViewController,而是部分覆盖UIViewController的UITableView

2 个答案:

答案 0 :(得分:2)

你是否将scrollView委托设置为self?

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    self.scrollView.delegate = self

}

答案 1 :(得分:0)

import re    
import time    
import requests    
from bs4 import BeautifulSoup    
import pandas as pd

def main():

    html = requests.get("https://economictimes.indiatimes.com/marketstats/pageno-1,pid-58,sortby-CurrentYearRank,sortorder-asc,year-2017.cms")
    soup = BeautifulSoup(html.text, 'html.parser')
    jstr = {}
    lis = []
    code = ''
    comp = ''
    for link in soup.find_all(class_='w170 alignL'):

        print(link.get('href'))
        Name1 = link
        Name11 = str(Name1)
        Name2 = Name11.lstrip('</b>')
        Name = Name2.rstrip('</b>')
        print(Name)
        input()

        try:
            data = {'Name': Name}
            print('\n \n')
            lis.append(data)
            li = []
            p = re.compile('\w+')
            processed_texts = []
            processed_texts = p.findall(str(data))
            print("processed_texts",processed_texts)

        except:
            pass    

if __name__ == '__main__':    
    main()