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
}
}
答案 0 :(得分:1)
答案 1 :(得分:0)
我在执行以下操作时遇到过类似的事情:
当在现有的WKWebView上点击链接时,在webView:decidePolicyForNavigationAction:decisionHandler:
中,我初始化一个新的视图控制器,该控制器控制WKWebView并开始通过来自手机上运行的本地Web服务器的URL请求加载内容
在webView:didFinishNavigation:
上,我将该视图控制器推送到导航控制器。
我所看到的内容:内容每次都会加载滚动大约1/3。
我试过的东西不起作用:要求网页视图的滚动视图滚动到顶部,通过JavaScript设置滚动位置。
做了什么工作:在上面的步骤1中,在初始化视图控制器(开始在Web视图中加载URL请求)之后,我将视图控制器的视图添加到我的视图中(并通过{{将其发送到后面) 1}}所以它没有显示 - 我尝试将其sendSubviewToBack:
设置为零,事情变得怪异。
这就是技巧和网页内容加载到正确的滚动位置(顶部)。
听起来这可能是同一个问题 - 所以我希望这至少可以让你想到一个解决方法。