Swift 在WKWebView完成特定页面的加载和抓取后执行某些操作
我要做的是,只有在我使用的Swift 在WKWebView完成特定页面的加载和抓取后执行某些操作,swift,url,webview,uibutton,reachability,Swift,Url,Webview,Uibutton,Reachability,我要做的是,只有在我使用的WKWebView完成加载和抓取页面后,才能执行操作 以下是webView的代码: let webView = WKWebView() let url = URL(string: "https://web.spaggiari.eu/home/app/default/menu_webinfoschool_genitori.php?custcode=")! let request = URLRequest(url: url)
WKWebView
完成加载和抓取页面后,才能执行操作
以下是webView的代码:
let webView = WKWebView()
let url = URL(string: "https://web.spaggiari.eu/home/app/default/menu_webinfoschool_genitori.php?custcode=")!
let request = URLRequest(url: url)
webView.load(request)
我想做的是,只有在进程完成搜索后(特定进程,而不是每次webView
完成加载时),才显示“连接”按钮。目前,我正在使用DispatchQueue
等待几秒钟,希望页面能够及时加载
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(4)) {
UIView.animate(withDuration: 0.8, animations: {
self.registerButton.alpha = 1
self.registerButton.isEnabled = true
})
UIView.animate(withDuration: 0.8, delay: 0.4, animations: {
self.blurButton.alpha = 1
})
}
我将Xcode与Swift3一起使用此代码表示页面已完全加载,这对您有帮助吗
func webpageFullyLoaded(_ str: String) {
if (str == "complete") || (str == "interactive") {
print("page completely loaded")
}
}
func webViewDidFinishLoad(_ webView: UIWebView) {
webpageFullyLoaded(webView.stringByEvaluatingJavaScript(from: "document.readyState"))
}
此代码表示页面已完全加载,这对您有帮助吗
func webpageFullyLoaded(_ str: String) {
if (str == "complete") || (str == "interactive") {
print("page completely loaded")
}
}
func webViewDidFinishLoad(_ webView: UIWebView) {
webpageFullyLoaded(webView.stringByEvaluatingJavaScript(from: "document.readyState"))
}
WKWebView
有此委托
/*! @abstract The web view's navigation delegate. */
weak open var navigationDelegate: WKNavigationDelegate?
WKNavigationDelegate
:
符合WKNavigationDelegate
协议的类可以提供
主框架导航的进度跟踪和决策方法
主帧和子帧导航的策略
此委托有一个方法,可能对您有所帮助
/*! @abstract Invoked when a main frame navigation completes.
@param webView The web view invoking the delegate method.
@param navigation The navigation.
*/
@available(iOS 8.0, *)
optional public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
所以你可以试试这个
func loadPage() {
let webView = WKWebView()
webView.navigationDelegate = self
let url = URL(string: "https://web.spaggiari.eu/home/app/default/menu_webinfoschool_genitori.php?custcode=")!
let request = URLRequest(url: url)
webView.load(request)
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
// Do your work here
}
还要确保您的自我
符合WKNavigationDelegate
更新
要在同一个WKWebView中处理不同网页的加载,您可以
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Swift.Void) {
print("Page Being loaded is \(navigationAction.request), you can do your work here")
decisionHandler(.allow)
}
您可以阅读更多有关导航代理中可以执行的操作的信息
WKWebView
拥有此代理
/*! @abstract The web view's navigation delegate. */
weak open var navigationDelegate: WKNavigationDelegate?
WKNavigationDelegate
:
符合WKNavigationDelegate
协议的类可以提供
主框架导航的进度跟踪和决策方法
主帧和子帧导航的策略
此委托有一个方法,可能对您有所帮助
/*! @abstract Invoked when a main frame navigation completes.
@param webView The web view invoking the delegate method.
@param navigation The navigation.
*/
@available(iOS 8.0, *)
optional public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!)
所以你可以试试这个
func loadPage() {
let webView = WKWebView()
webView.navigationDelegate = self
let url = URL(string: "https://web.spaggiari.eu/home/app/default/menu_webinfoschool_genitori.php?custcode=")!
let request = URLRequest(url: url)
webView.load(request)
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
// Do your work here
}
还要确保您的自我
符合WKNavigationDelegate
更新
要在同一个WKWebView中处理不同网页的加载,您可以
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Swift.Void) {
print("Page Being loaded is \(navigationAction.request), you can do your work here")
decisionHandler(.allow)
}
您可以在导航代理中阅读更多有关您可以执行的操作的信息“该特定过程”什么过程?在这种情况下,页面已完成加载上面写的url“该特定过程”什么过程?在这种情况下,页面已完成加载上面写的url谢谢!请您解释清楚,因为我是新加入此WebViewDidFinishLoad(UIwebviewdelegate)的人,在加载您的webView时会调用它。我们需要知道您的URL页面何时完全加载以显示connect或您需要的任何内容,所以我显示按钮的代码应该放在if语句中。因此,我使用WKWebView和UIWebView时遇到了一个问题。谢谢!请您解释清楚,因为我是新加入此WebViewDidFinishLoad(UIwebviewdelegate)的人,在加载您的webView时会调用它。我们需要知道您的URL页面何时完全加载以显示connect或您需要的任何内容,所以我显示按钮的代码应该放在if语句中。因此,我使用WKWebView并以您的身份使用UIWebView存在问题。如果WKWebView加载不同页面时我必须执行不同的操作怎么办?如果WKWebView加载不同页面时我必须执行不同的操作怎么办?
/*! @abstract The web view's navigation delegate. */
weak open var navigationDelegate: WKNavigationDelegate?