Swift 4 WebkitView URL 更改未完成其工作
Swift 4 WebkitView URL change not doing its job
我遇到了以下情况。
我正在使用 WebkitView 来显示一些会话信息。在大多数地方,它是在 ViewController 出现时生成的,但我有一个特定的视图,我必须在用户与更改为下个月或上个月的按钮交互时重新加载它。
我有以下代码:
// This is my connection to the storyboard element
@IBOutlet weak var areaNotasMes: WKWebView!
之后,我有一个函数可以执行 URL 处理:
func actualizarUrlNotasMes(fechaNueva: Date) {
let formateadorAdicional = DateFormatter()
formateadorAdicional.dateFormat = "yyyyMM"
let url = URL(string: "https://myurl/\(formateadorAdicional.string(from: fechaNueva))")
areaNotasMes.load(URLRequest(url: url!))
}
我有一个按钮事件,该事件将函数与下一个 YEAR_MONTH 组合结合使用,如下所示:
@IBAction func mesSigPressed(_ sender: UIButton) {
// Some more code to get the fechaActual variable
actualizarUrlNotasMes(fechaNueva: fechaActual)
// Some more code
}
所以,基本上发生的事情是它在我第一次打开 ViewController 时加载,但是当我单击按钮更改为下个月时,日期会更改、正确生成并传递给功能。它生成正确的 URL,但是当 areaNotasMes.load(...)
函数运行时,WebKitView 上没有任何刷新。我尝试添加 areaNotasMes.reload()
,但它也没有任何作用。每次更改 URL 时,我都必须喜欢销毁并重新创建 WebKitView 吗?还是我没有正确处理 URL 更改?
另外,控制台时不时会弹出一些这样的消息,并不总是:
[BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C5.1:2][0x7fea2d201de0] get output frames failed, state 8196
TIC Read Status [5:0x0]: 1:57
不,您不需要在更改 URL 时重新初始化 webview。我无法根据您提供的信息判断问题所在。我建议您将 ViewController 设置为 webview 的 navigationDelegate
并实施这些方法来尝试诊断问题:
func webView(WKWebView, didStartProvisionalNavigation: WKNavigation!)
func webView(WKWebView, didFail: WKNavigation!, withError: Error)
//Called when an error occurs during navigation.
func webView(WKWebView, didFailProvisionalNavigation: WKNavigation!, withError: Error)
文档here
我想我实际上设法以最随机的方式解决了这个问题。我想也许有一些重新加载功能(.reload()
除外)所以使用自动完成语法,我想出了以下命令:
areaNotasMes.reloadInputViews()
显然 .reloadInputViews()
是一个继承自 UIView
的空函数,当对象是第一响应者时它会更新自定义输入和附件视图。您可以在这里查看:reloadInputViews()
它确实发送了一些 Error Domain=NSURLErrorDomain Code=-999 "(null)"
尽管它实际上按预期工作并刷新了 WebKitView 信息。
我希望这对其他人有帮助。
我遇到了以下情况。
我正在使用 WebkitView 来显示一些会话信息。在大多数地方,它是在 ViewController 出现时生成的,但我有一个特定的视图,我必须在用户与更改为下个月或上个月的按钮交互时重新加载它。
我有以下代码:
// This is my connection to the storyboard element
@IBOutlet weak var areaNotasMes: WKWebView!
之后,我有一个函数可以执行 URL 处理:
func actualizarUrlNotasMes(fechaNueva: Date) {
let formateadorAdicional = DateFormatter()
formateadorAdicional.dateFormat = "yyyyMM"
let url = URL(string: "https://myurl/\(formateadorAdicional.string(from: fechaNueva))")
areaNotasMes.load(URLRequest(url: url!))
}
我有一个按钮事件,该事件将函数与下一个 YEAR_MONTH 组合结合使用,如下所示:
@IBAction func mesSigPressed(_ sender: UIButton) {
// Some more code to get the fechaActual variable
actualizarUrlNotasMes(fechaNueva: fechaActual)
// Some more code
}
所以,基本上发生的事情是它在我第一次打开 ViewController 时加载,但是当我单击按钮更改为下个月时,日期会更改、正确生成并传递给功能。它生成正确的 URL,但是当 areaNotasMes.load(...)
函数运行时,WebKitView 上没有任何刷新。我尝试添加 areaNotasMes.reload()
,但它也没有任何作用。每次更改 URL 时,我都必须喜欢销毁并重新创建 WebKitView 吗?还是我没有正确处理 URL 更改?
另外,控制台时不时会弹出一些这样的消息,并不总是:
[BoringSSL] nw_protocol_boringssl_get_output_frames(1301) [C5.1:2][0x7fea2d201de0] get output frames failed, state 8196
TIC Read Status [5:0x0]: 1:57
不,您不需要在更改 URL 时重新初始化 webview。我无法根据您提供的信息判断问题所在。我建议您将 ViewController 设置为 webview 的 navigationDelegate
并实施这些方法来尝试诊断问题:
func webView(WKWebView, didStartProvisionalNavigation: WKNavigation!)
func webView(WKWebView, didFail: WKNavigation!, withError: Error)
//Called when an error occurs during navigation.
func webView(WKWebView, didFailProvisionalNavigation: WKNavigation!, withError: Error)
文档here
我想我实际上设法以最随机的方式解决了这个问题。我想也许有一些重新加载功能(.reload()
除外)所以使用自动完成语法,我想出了以下命令:
areaNotasMes.reloadInputViews()
显然 .reloadInputViews()
是一个继承自 UIView
的空函数,当对象是第一响应者时它会更新自定义输入和附件视图。您可以在这里查看:reloadInputViews()
它确实发送了一些 Error Domain=NSURLErrorDomain Code=-999 "(null)"
尽管它实际上按预期工作并刷新了 WebKitView 信息。
我希望这对其他人有帮助。