gpt4 book ai didi

ios - 设备中的 WKWebView 加载请求不起作用,但模拟器正在运行

转载 作者:行者123 更新时间:2023-11-28 07:33:37 25 4
gpt4 key购买 nike

我有一个关于WKWebview的问题。
首先,我有一个 UITabbarViewController(tab1, tab2) 和两个 ViewController。
在 ViewController1 中有两个按钮 (button1, button2),其操作是单击标签栏 tab2 以显示 ViewController2 并带来不同的 url 字符串。
在ViewController2中有一个WKWebView,并加载url字符串的请求。
我在模拟器中工作正常,但第一次构 build 备并工作正常,然后我点击标签栏 tab1 并返回到 ViewController1。
我单击按钮 2 并显示 ViewController2。
而且我还设置了断点,WKWebview已经运行了加载请求功能。
但是 WKWebview 也显示了 button1 的 url 内容,而不是 button2 的 url 内容。当我返回并再次单击 button2 时,它起作用了。为什么WKWebView第一次没有刷新?
谢谢。
Xcode 9.4.1,设备 iOS 12.0.1(16A404)

class ViewController1: UIViewController {

@objc func btnTapped(sender: UIButton) {

if let vc = self.navigationController?.parent as? ViewController {
if let number = item?.number {

let domainPath = “\(customURL!.absoluteString)"
let extPath = "detail/\(number)/&topPageBack=list"
let encodestr = extPath.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
let finalPath = domainPath.appending("/").appending(encodestr!)

if let url = URL(string: finalPath) {
vc.loadSpecificURL = url
}
vc.tabBarView.buttonClick(tag: 1)
}
}
}
}


class ViewController2: UIViewController {

lazy var webViewController: CustomWKWebViewController = {
let controller = CustomWKWebViewController()
controller.wKWebViewPage = .searchPage
return controller
}()

var loadURL: URL?

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if let url = loadURL {
webViewController.reloadWebView(url: url)
loadURL = nil
}

}

}


class CustomWKWebViewController: UIViewController {

private func settingWebView() -> WKWebView {
let userScript = WKUserScript(source: source, injectionTime: .atDocumentStart, forMainFrameOnly: true)

let userContentController = WKUserContentController()
userContentController.add(self, name: "Login")
userContentController.add(self, name: "Other")
userContentController.add(self, name: “LD”)
userContentController.addUserScript(userScript)

let config = WKWebViewConfiguration()
config.userContentController = userContentController

webView = WKWebView(frame: .zero, configuration: config)
webView!.navigationDelegate = self
webView!.uiDelegate = self
webView!.scrollView.bounces = false
webView!.allowsBackForwardNavigationGestures = true
webView!.backgroundColor = .clear
webView!.scrollView.backgroundColor = .clear

if let request = getRequest() {
webView!.load(request)
}
return webView!
}

func reloadWebView(url: URL?) {

if let url = url, let webView = self.webView {
var requestForBlank = URLRequest(url: URL(string: "about:blank")!, cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 3)
requestForBlank.httpMethod = "POST"

var request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 3)
request.httpMethod = "POST"

webView.load(requestForBlank)
webView.load(request)//breakpoint always break here, but the view don't load request.
}
}

}

最佳答案

首先检查 web url 是否不为 nil,然后还调用 if 的 else 部分。

if let url = webview.url {
webview.reload()
} else {
webview.load(URLRequest(url: originalURL))
}

关于ios - 设备中的 WKWebView 加载请求不起作用,但模拟器正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53908819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com