我应该传递给scrollToEndOfDocument(_ :)?

时间:2017-01-10 11:28:01

标签: swift cocoa webkit

我正在尝试让WKWebView在内容发生变化时自动向下滚动。我将此函数添加到我的WKNavigationDelegate,它是NSViewController的子类:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    print("Finished loading web view.")
    webView.scrollToEndOfDocument(self)
}

它崩溃了:

-[WKWebView scrollToEndOfDocument:]: unrecognized selector sent to instance 0x6080001a07e0

我猜self不是我应该传递给scrollToEndOfDocument的。我也尝试传递webViewnil,但结果相同。 我应该通过什么价值?

N.B。我试过了self,因为Apple’s docs说:

  

声明

     

func scrollToEndOfDocument(_ sender:Any?)

     

参数

     

发送方

     

通常是调用此方法的对象。

1 个答案:

答案 0 :(得分:1)

您可能必须通过JavaScript:

let script = "window.scrollTo(0, document.body.scrollHeight)"
webView.evaluateJavaScript(script)

这适用于老式的WebView;离开后代:

尝试在WebView的主框架文档视图上调用scrollToEndOfDocument:

webView.mainFrame.frameView.documentView.scrollToEndOfDocument(nil)

(作为发件人传递的内容无关紧要,与您所看到的错误无关。)