gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:31:36 25 4
gpt4 key购买 nike

我想知道如何子类化 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com