使用以下代码,我能够在 Storyboard 上显示我的导航栏构建,但是,andy URL 链接无法打开并且已失效。我发现我的 ViewController 需要一种方法来处理使用决策处理程序。 (参见我尝试了什么部分)
导入UIKit 导入WebKit
SecondViewController 类:UIViewController {
@IBOutlet weak var webViewTwo: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://on.sprintful.com/dr-clutter-junk")
webViewTwo.load(URLRequest(url: url!))
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
部分:我尝试了什么
使用以下代码,链接可以工作,但故事板中的导航栏不显示。 我相信 IB Outlet 参考才是问题所在。当我去编辑
“func webView(_ webView:WKWebView,decidePolicyFor navigationAction:WKNavigationAction,decisionHandler:”并将其更改为“func webViewTwo(_ webView:WKWebView,decidePolicyFor navigationAction:WKNavigationAction,decisionHandler:”导航栏不会显示,链接也不起作用。
导入UIKit 导入WebKit
类 SecondViewController: UIViewController, WKNavigationDelegate { @IBOutlet var webViewTwo:WKWebView!
override func loadView() {
webViewTwo = WKWebView()
view = webViewTwo
let url = URL(string: "https://calendly.com/drclutterjunk")!
webViewTwo.load(URLRequest(url: url))
webViewTwo.allowsBackForwardNavigationGestures = true
webViewTwo.navigationDelegate = self
}
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if navigationAction.navigationType == .linkActivated {
if let url = navigationAction.request.url,
let host = url.host, host.hasPrefix("dttps://calendly.com") !=
UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url)
decisionHandler(.cancel)
} else {
// Open in web view
decisionHandler(.allow)
}
} else {
// other navigation type, such as reload, back or forward buttons
decisionHandler(.allow)
}
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .darkContent
}
}