当我在scrollViewDidScroll:中加载html字符串时,我试图在webView方法中获取回调,但是内容在滚动并且scrollViewDidScroll没有得到调用。如果我在webView中传递URLRequest对象,则效果很好。

我注意到的一件事是,如果我尝试加载html字符串,则scrollView内容大小与滚动视图大小相同,如果我尝试加载url,则它给出的scrollView内容大小将大于scrollView大小,在这种情况下scrollViewDidScroll:会被调用。

我已经尝试了很多东西。首先,我设置滚动视图委托webView.scrollView.delegate = self并实现scrollViewDidScroll:方法,但是它不起作用,然后我创建了一个符合滚动视图委托的webView子类。我重写scrollViewDidScroll:

protocol MyWebViewDelegate: class {
    func myWebViewDidScroll(_ scrollView: UIScrollView)
}

class MyWebView: UIWebView {
    public weak var scrollViewDelegate: MyWebViewDelegate?
    override func scrollViewDidScroll(_ scrollView: UIScrollView) {
        super.scrollViewDidScroll(scrollView)
        scrollViewDelegate?.myWebViewDidScroll(scrollView)
    }
}

现在,我遵循MyWebViewDelegate协议并实现myWebViewDidScroll:方法。完成所有工作后,我在myWebViewDidScroll:中获得了回调,但是当滚动视图跳动时。

最佳答案

您是否仅为UIWebView设置了委托。请设置scrollView的委托。

webView.scrollView.delegate = self

10-08 01:02