检测用户何时点击加载在 UIWebView 或 WKWebView 中的 web 表单
Posted
技术标签:
【中文标题】检测用户何时点击加载在 UIWebView 或 WKWebView 中的 web 表单【英文标题】:Detecting when a user clicks on a webform loaded in a UIWebView or WKWebView 【发布时间】:2015-04-09 11:22:50 【问题描述】:我想检测用户何时按下在 ios webview 中加载的 html 页面中的 webform 按钮(最好使用 WKWebView)。 这可能吗?如果可以,如何?
一般评论:
我知道 WKWebView 有一些限制,因此如果您知道一种适用于 WKWebView 的方法,请分享。如果您知道一种适用于 UIWebView 的方法,请分享它,我可以使用它作为开始为我的基于 WKWebView 的应用程序寻找解决方案。
【问题讨论】:
【参考方案1】:要使用 WKWebView 这样做,您需要符合 WKNavigationDelegate,并设置 webView 的 navigationDelegate
。
您可能正在寻找的方法是- webView:decidePolicyForNavigationAction:decisionHandler:
,您可以在其中确定是否允许链接触摸。您可以从navigationAction.request.URL
获取目标网址。
一个简单的例子:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
if ([navigationAction.request.URL.relativeString hasPrefix:kLocalContentPrefix])
// Show some local content
// Don't let the webview load this URL.
decisionHandler(WKNavigationActionPolicyCancel);
else
// Allow the webview to load this URL.
decisionHandler(WKNavigationActionPolicyAllow);
要在 UIWebView 中做到这一点,几乎是一样的,只是你在UIWebViewDelegate 中符合-(BOOL)webView:shouldStartLoadWithRequest:navigationType:
。但如果可能,我会推荐使用 Webkit!
【讨论】:
【参考方案2】:有一种解决方法,由 shazron 在 Objective-C 中的 https://github.com/shazron/WKWebViewFIleUrlTest 演示,将文件复制到 /tmp/www 并从那里加载它们。
【讨论】:
感谢您的回答。项目描述说“一个测试项目,用于证明 WKWebView 类无法在设备上的 iOS 8 beta 4 和 5 中加载 file:// url”。我不明白如何使用它来拦截用户点击。你能说得更具体点吗?以上是关于检测用户何时点击加载在 UIWebView 或 WKWebView 中的 web 表单的主要内容,如果未能解决你的问题,请参考以下文章