WKWebView,将网页滚动到顶部

Esq*_*uth 12 ios swift wkwebview

我试过这个,这应该有效,但不是:

webView.scrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: false)
Run Code Online (Sandbox Code Playgroud)

我正在使用浏览器,并且有几个webView保持在堆栈中.有些网站按预期工作,从顶部开始,有些则没有.

从顶部开始:http://leagueoflegends.com/

在此输入图像描述

这个开始有点下降,必须手动向上滚动:http://euw.leagueoflegends.com/

在此输入图像描述

额外注意,这个问题永远不会发生在第一个webView上.即使我加载第二个链接并将其显示为第一个webView,它也不会滚动到中间.

ndr*_*isg 5

旋转 WKWebView 时遇到了非常相似的问题。

旋转到横向后,视图会自动滚动到中间。

我使用以下解决方法在旋转后再次滚动到页面顶部:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    coordinator.animate(alongsideTransition: nil, completion: { (context) in
        self.webKitView.evaluateJavaScript("window.scrollTo(0,0)", completionHandler: nil)
    })
}
Run Code Online (Sandbox Code Playgroud)

在您的情况下,应该可以在加载 URL 后直接调用它。

webKitView.evaluateJavaScript("window.scrollTo(0,0)", completionHandler: nil)
Run Code Online (Sandbox Code Playgroud)

或者,如果您在 WKWebView 中导航时出现问题,您可以使用 WKNavigationDelegate(我没有测试过):

override func viewDidLoad() {
    super.viewDidLoad()
    // load content of webKitView here and set as view or add as subview
    webKitView.navigationDelegate = self
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    webKitView.evaluateJavaScript("window.scrollTo(0,0)", completionHandler: nil)
}
Run Code Online (Sandbox Code Playgroud)


San*_*uja 0

我会尝试使用 javascript doc滚动到顶部:

NSString *script = @"window.scrollTo(0, 0)";
// UIWebView
// [webView stringByEvaluatingJavaScriptFromString:script];
// WKWebView
[webView evaluateJavaScript:script completionHandler:NULL];
Run Code Online (Sandbox Code Playgroud)