在 UIWebView 中没有调用 scrollViewDidScroll

Posted

技术标签:

【中文标题】在 UIWebView 中没有调用 scrollViewDidScroll【英文标题】:scrollViewDidScroll not getting called in UIWebView 【发布时间】:2017-02-24 07:00:43 【问题描述】:

当我在webView 中加载html 字符串但内容正在滚动并且scrollViewDidScroll 没有被调用时,我试图在scrollViewDidScroll: 方法中获取回调。如果我在 webView 中传递 URLRequest 对象,它可以正常工作。

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

我尝试了很多东西。首先我设置滚动视图委托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: 中收到了回调,但是当滚动视图反弹时。

【问题讨论】:

【参考方案1】:

你是不是只为 UIWebView 设置了委托。设置 scrollView 的委托。

webView.scrollView.delegate = self

【讨论】:

谢谢。但是我已经设置了所有的代表,当 webView 被反弹时,scrollViewDidScroll 会被调用。正如我已经描述的,如果我加载 URLRequest 对象,它可以在相同的代码下正常工作。我只有加载 html 字符串的问题。

以上是关于在 UIWebView 中没有调用 scrollViewDidScroll的主要内容,如果未能解决你的问题,请参考以下文章

iPhone - UIWebView 在没有数据连接的情况下不调用 didFailLoadWithError

使用没有alertView的UIWebView在iOS中以编程方式进行电话呼叫

没有调用 didReceiveAuthenticationChallenge

如果从 tableView:didSelectRowAtIndexPath 调用 UIWebView 不调用 loadRequest:

清除 UIWebview 缓存

iOS:在 UIWebview 中使用 javascript 调用 obj-c 方法