【问题标题】:Detecting when a user clicks on a webform loaded in a UIWebView or WKWebView检测用户何时点击加载在 UIWebView 或 WKWebView 中的 web 表单
【发布时间】:2015-04-09 11:22:50
【问题描述】:

我想检测用户何时按下在 iOS webview 中加载的 HTML 页面中的 webform 按钮(最好使用 WKWebView)。 这可能吗?如果可以,如何

一般评论:

我知道 WKWebView 有一些限制,因此如果您知道一种适用于 WKWebView 的方法,请分享。如果您知道一种适用于 UIWebView 的方法,请分享它,我可以使用它作为开始为我的基于 WKWebView 的应用程序寻找解决方案。

【问题讨论】:

    标签: ios webforms 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”。我不明白如何使用它来拦截用户点击。你能说得更具体点吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多