【问题标题】:Why does WKWebView call scrollviewDidScroll when initialised and how to prevent it?为什么 WKWebView 在初始化时会调用 scrollviewDidScroll 以及如何防止它?
【发布时间】:2015-04-24 13:57:51
【问题描述】:

在 UIViewController 中,我实例化了一个 WKWebView 并将视图控制器设置为 WKWebiew 滚动视图的委托:

class MyViewController: UIViewController, UIScrollViewDelegate {

    var webView : WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        webView = WKWebView(frame: self.view.frame)
        view = webView      

        webView.loadHTMLString("<h1>hello</h1>", baseURL: NSURL(string: "http://www.google.com")!)

        webView.scrollView.delegate = self
    }

    func scrollViewDidScroll(scrollView: UIScrollView) {
        println("didScroll")
    }

我遇到的问题是,在创建 WKWebView 后立即调用 scrollViewDidScroll(即没有用户实际滚动任何内容)。

为什么会这样,我该如何预防?

【问题讨论】:

  • 解释你真正想要完成的事情。这太不具体了。
  • 如果您不想调用 scrollview 方法,请不要设置委托或不实现 scrollviewDidScroll。但是如果你想使用委托,要么设置它,要么不实现该方法。但正如@StefanArentz 所说,请解释一下您要做什么。抱歉,如果我来晚了
  • 我也经常遇到这个问题。
  • 在布局过程中出现嘈杂的滚动消息我并不感到惊讶。在 viewDidLayoutSubviews 中设置委托应该会让你克服所有这些。

标签: ios uiscrollview uiscrollviewdelegate wkwebview


【解决方案1】:

在scrollViewWillBeginDragging方法中设置一个bool值为true,该方法只在用户滚动时调用,WKWebview不会自动调用

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {

    scrollByDragging = true
}

func scrollViewDidScroll(_ scrollView: UIScrollView) {

   if !scrollByDragging{

       UIView.animate(withDuration: 0.01) {
         scrollView.setContentOffset(.zero, animated: true)
       }
    }
}

【讨论】:

  • 我有一个用于 Wkebview 的 IBOUtlet 我有委托 webView.scrollView.delegate = self 但 scrollViewDidScroll 委托没有调用其他需要做的事情。
  • 添加 scrollViewDidScroll 后,我的 WKWebview 滚动变得非常慢,你的情况是这样吗,你能提出一些建议吗?
【解决方案2】:

如果您使用contentOffset,您将能够检测到用户何时滚动。

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.contentOffset.y >= 0 {
        print("didScroll")
    }
}

如果您的UIScrollView 位于UINavigationController 内,contentOffset.y 将从-44 开始,但实际上可以使用 0。

【讨论】:

    猜你喜欢
    • 2017-10-28
    • 2020-12-12
    • 2016-06-02
    • 2014-07-17
    • 2016-08-09
    • 2021-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多