【问题标题】:WKWebView content jumping on loadWKWebView 内容在加载时跳跃
【发布时间】:2016-01-31 11:15:47
【问题描述】:

我创建了一个简单的测试应用程序来可靠地重现我的问题并最大限度地减少移动部件。它只包含一个导航控制器和一个视图控制器,我向其中添加了 WKWebView。我立即告诉 WKWebView 导航到www.google.ca。页面加载后,内容会自动跳到标题栏下方。这可以在运行 iOS 8/9/9.1 的各种模拟器/设备上一致地重现。下面是我的 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
    }
}

【问题讨论】:

    标签: ios swift wkwebview


    【解决方案1】:

    webView.frame = view.bounds放在view.addSubview(webView)之前

    【讨论】:

    • 把它放在viewWillLoad() 会修复它
    • 我尝试了这两个建议,但都没有解决问题。好吧,不完全是,viewWillLoad() 似乎不是 UIViewController 上的方法,但 viewWillAppear() 确实如此,所以我尝试了这一点无济于事。
    • 另外值得注意的是,这个问题是特定于网站的 --> 它发生在 www.google.com 而不是 www.twitter.com。
    【解决方案2】:

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

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

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

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

    我尝试过但不起作用的方法:让 web 视图的滚动视图滚动到顶部,通过 JavaScript 设置滚动位置。

    什么起作用了:在上面的第 1 步中,在初始化视图控制器(开始在 Web 视图中加载 URL 请求)之后,我将视图控制器的视图添加到我的视图中(并通过 @987654323 将其发送到后面@ 所以它不显示 - 我尝试将其 alpha 设置为零并且事情变得怪异)。

    这样就可以了,网页内容会在正确的滚动位置(顶部)加载。

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

    【讨论】:

      猜你喜欢
      • 2020-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多