Ios 为什么WKWebView在初始化时调用scrollviewDidScroll以及如何防止它?

Ios 为什么WKWebView在初始化时调用scrollviewDidScroll以及如何防止它?,ios,uiscrollview,uiscrollviewdelegate,wkwebview,Ios,Uiscrollview,Uiscrollviewdelegate,Wkwebview,在UIViewController中,我实例化了一个WKWebView,并将视图控制器设置为WKWebView scrollview的委托: class MyViewController: UIViewController, UIScrollViewDelegate { var webView : WKWebView! override func viewDidLoad() { super.viewDidLoad() webView = WK

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

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")
    }
类MyViewController:UIViewController、UIScrollViewDelegate{
var-webView:WKWebView!
重写func viewDidLoad(){
super.viewDidLoad()
webView=WKWebView(框架:self.view.frame)
视图=网络视图
webView.loadHTMLString(“你好”,baseURL:NSURL(字符串:http://www.google.com")!)
webView.scrollView.delegate=self
}
func scrollViewDidScroll(scrollView:UIScrollView){
println(“didcoll”)
}
我遇到的问题是,一旦创建了WKWebView,就会调用scrollViewDidScroll(即用户实际上没有滚动任何内容)


这是为什么?我如何防止它?

如果使用
contentOffset
,则可以检测用户何时滚动

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

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

在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)
       }
    }
}

解释您实际试图实现的目标。这太不具体了。如果您不想调用scrollview方法,请不要设置委托或不实现scrollviewDidScroll。但是如果您想使用委托,请设置它或不实现该方法。但是,正如@StefanArentz所说,请再次解释您试图执行的操作。很抱歉,如果我来晚了,我也经常遇到这个问题。我对布局时出现的嘈杂的滚动消息并不感到惊讶。在ViewDidLayoutSubview中设置代理应该可以让您克服所有这些。我有一个用于Wkebview的IBOUtlet我有代理webView.scrollView.delegate=self,但scrollViewDidScroll代理没有添加scrollViewDidScroll后,我的WKWebview滚动变得非常慢,如果您是这样的话,您能提出一些建议吗。