ios - 子类 UIWebView 以附加每个链接(在 Swift 中)

标签 ios swift uiwebview uiwebviewdelegate

我想知道如何子类化 UIWebView 来附加用户访问的每个链接,并在末尾添加一个字符串,如“=Human”。需要明确的是,如果用户访问 Yahoo.com,然后单击任何链接,末尾仍会带有“=Human”。

最佳答案

I could subclass UIWebView

但是docs说:

A WKWebView object displays interactive web content, such as for an in-app browser.

For new development, employ this class instead of the older UIWebView class.

这对我有用:

import UIKit
import WebKit

class WebViewController: UIViewController, 
                         WKNavigationDelegate {

    var webView: WKWebView!

    override func loadView() {

        let webView = WKWebView()
        webView.navigationDelegate = self
        view = webView

        let defaultUrl = NSURL(
            string: "https://www.yahoo.com"
        )

        if let validDefaultUrl = defaultUrl {
            let yahooRequest = NSURLRequest(URL: validDefaultUrl)
            webView.loadRequest(yahooRequest)
        }

    }

    //MARK: - WKNavigationDelegate methods:

    func webView(webView: WKWebView,
        decidePolicyForNavigationAction navigationAction: WKNavigationAction,
        decisionHandler: (WKNavigationActionPolicy) -> Void)
    {
        print("[me]: In WKWebView delegate method")

        if navigationAction.navigationType == .LinkActivated {
            print("[me]: User clicked on a link.")

            let request = navigationAction.request

            if let url = request.URL,
                   newURL = NSURL(string: url.absoluteString + "=User")
            {
                print("[me]: New url is valid.")
                print("[me]: New url is \(newURL.absoluteString)")

                let newRequest = NSMutableURLRequest(URL: newURL)
                decisionHandler(.Cancel)
                webView.loadRequest(newRequest)
            }

        }

        decisionHandler(.Allow)
    }

}

编辑:实际上,由于某种原因,每次单击链接时,代码都不会进入 if navigationAction.navigationType == .LinkActivated block 。有时我只看到输出:

[me]: In WKWebView delegate method

我看不到输出:

[me]: User clicked on a link.

关于ios - 子类 UIWebView 以附加每个链接(在 Swift 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36511741/

相关文章:

objective-c - 为什么我的 UIImageView 对象没有实时绘制?

ios - JSON 解码器类型不匹配错误

ios - (Int) -> $T4 与 NSMutableArray 不同

iphone - 从用作 tableHeaderView 的 xib 文件内的按钮转到 VC

ios - UIWebView VS WKWebView加载本地html

iphone - 将文档中的 JPG 图像保存到相册 - 示例代码

ios - 我可以知道 requireGestureRecognizerToFail 到底会做什么吗?

ios - 控制缩放行为 ARKit

ios - 加速 loadHTMLString-d 内容的 WKWebView 呈现的策略?

ios - 如何在 BBC News 应用程序的 UIScrollView 中添加 "advertisements"?