如何使用loadHTMLString()实现WKWebView历史记录的滑动手势

时间:2019-04-29 19:58:57

标签: swift wkwebview

我有一些静态HTML页面,我使用WKWebView方法加载到loadHTMLString(_:baseURL:)中。本地HTML页面中的href链接使用相同的方法加载另一个本地HTML页面。

已加载的本地HTML页面之间的历史记录导航必须使用滑动手势(向后和向前)工作,因此我设置了: webView.allowsBackForwardNavigationGestures = true

localHTML <-(swipe back/forward)-> localHTML <-(swipe back/forward)-> localHTML

目标是具有与使用load(_:URLRequest)时的滑动导航完全相同的光学行为,这意味着即将到来的历史项目(后退和前进项目)的预览。

(另一个用户也有类似的问题,但该解决方案不适用于我的问题:iPhone UIWebView loadHtmlString not added to history

1 个答案:

答案 0 :(得分:0)

WKWebView导航手势(在历史记录中来回滑动)可以与load(_:URLRequest)一起正常使用。 loadHTMLString()

似乎没有解决方案

该问题的一种可能的解决方案是使用init(fileURLWithPath:)类型的URL来加载本地HTML页面。

override func viewDidLoad() {
    super.viewDidLoad()

    // WKWebView configuration ...

    webView.allowsBackForwardNavigationGestures = true

    let url = URL(fileURLWithPath: Bundle.main.path(forResource: "page1", ofType: ".html")!)
    let request = URLRequest(url: url)
    webView.load(request)
}

func loadPage2() {
    let url = URL(fileURLWithPath: Bundle.main.path(forResource: "page2", ofType: ".html")!)
    let request = URLRequest(url: url)
    webView.load(request)
}

在使用fileURLWithPath加载本地HTML页面之后,滑动导航手势可以正常工作。