WKWebView content jumping on load

时间:2015-10-30 22:50:33

标签: ios swift wkwebview

I've created a simple test app to reproduce my problem reliably and minimize the moving parts. It contains just a navigation controller and a view controller that I add a WKWebView to. I immediately tell that WKWebView to navigate to www.google.ca. Once the page has loaded, the content automatically jumps up underneath the header bar. This is reproducible consistently on various simulators/devices running iOS 8/9/9.1. Below is the code for my ViewController:

//  ViewController.swift
import UIKit
import WebKit

class ViewController: UIViewController {
    let webView = WKWebView()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(webView)
        let url = NSURL(string: "http://www.google.ca")!
        let request = NSURLRequest(URL: url)
        webView.loadRequest(request)
        webView.frame = view.bounds
    }
}

GIF

2 个答案:

答案 0 :(得分:1)

put webView.frame = view.bounds before view.addSubview(webView)

答案 1 :(得分:0)

我在执行以下操作时遇到过类似的事情:

  1. 当在现有的WKWebView上点击链接时,在webView:decidePolicyForNavigationAction:decisionHandler:中,我初始化一个新的视图控制器,该控制器控制WKWebView并开始通过来自手机上运行的本地Web服务器的URL请求加载内容

  2. webView:didFinishNavigation:上,我将该视图控制器推送到导航控制器。

  3. 我所看到的内容:内容每次都会加载滚动大约1/3。

    我试过的东西不起作用:要求网页视图的滚动视图滚动到顶部,通过JavaScript设置滚动位置。

    做了什么工作:在上面的步骤1中,在初始化视图控制器(开始在Web视图中加载URL请求)之后,我将视图控制器的视图添加到我的视图中(并通过{{将其发送到后面) 1}}所以它没有显示 - 我尝试将其sendSubviewToBack:设置为零,事情变得怪异。

    这就是技巧和网页内容加载到正确的滚动位置(顶部)。

    听起来这可能是同一个问题 - 所以我希望这至少可以让你想到一个解决方法。