gpt4 book ai didi

ios - WKWebView 委托(delegate)问题(使用 Swift 的 Xcode 7.3)

转载 作者:行者123 更新时间:2023-11-29 01:00:21 27 4
gpt4 key购买 nike

我正在创建一个本质上是一个 WebView 的应用程序。它使用无法在常规网络应用程序中使用的自定义专有字体,因此是应用程序包装器。

它适用于大多数用途,但我想检查 URL 请求是否正确加载,以在给出错误 URL 或 URL 加载失败时发送“找不到页面”消息或类似消息。为此,我相信我需要一名委托(delegate)。

问题:每次我尝试创建委托(delegate)(尽管尝试了我在示例中看到的几种方法)时,应用程序都会在加载时崩溃。

(顺便说一句:如果我以编程方式而不是在 Storyboard 中创建 Web View ,则自定义字体不会加载,这对我来说是主要要求的失败。如果您有解决方案,请记住这一点)

代码:

import UIKit
import WebKit

class ViewController: UIViewController, WKNavigationDelegate {

@IBOutlet var containerView: UIView!
var screenEdgeRecognizer: UIScreenEdgePanGestureRecognizer!
//var currentRadius:CGFloat = 0.0

@IBOutlet var webView: WKWebView!

override func viewDidLoad() {
super.viewDidLoad()

screenEdgeRecognizer = UIScreenEdgePanGestureRecognizer(target: self,
action: #selector(ViewController.goBack(_:)))
screenEdgeRecognizer.edges = .Left
view.addGestureRecognizer(screenEdgeRecognizer)

// *** This line commented out to prevent app from crashing!
//self.webView.navigationDelegate = self

webView.hidden = false;
// this allows the UIWebView box to your background color seamlessly.
webView.opaque = false;

// Do any additional setup after loading the view, typically from a nib.
let url = NSURL (string: "http://localhost/web_app/mobile_login.php");

let requestObj = NSURLRequest(URL: url!);

//let localfilePath = NSBundle.mainBundle().URLForResource("home", withExtension: "html");
//let requestObj = NSURLRequest(URL: localfilePath!);
webView.loadRequest(requestObj);
//webView.allowsBackForwardNavigationGestures = true;

}

// **** This code I hope to use but I think requires a delegate in order to work
func webView(webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: NSError) {
let alert = UIAlertController(title: "Error", message: error.localizedDescription, preferredStyle: .Alert)
alert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: nil))
presentViewController(alert, animated: true, completion: nil)
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

override func preferredStatusBarStyle() -> UIStatusBarStyle {

//LightContent
return UIStatusBarStyle.LightContent

//Default
//return UIStatusBarStyle.Default

}

func goBack(sender: UIScreenEdgePanGestureRecognizer) {
//

self.webView.goBack()

}

非常感谢您的建议。

最佳答案

据我所知,您还不能在 Interface Builder 中创建 WKWebView。我相信它必须以编程方式创建。您是否在 Storyboard 中使用 UIWebView 并尝试将 outlet 设置为 WKWebView?如果是这样,这就是它崩溃的原因。它们完全是不同的对象。

如果必须在 Storyboard 中构建它,您可以尝试使用 UIWebView。但我不知道为什么 WKWebView 在以编程方式创建时会有任何不同的行为(嗯,它不能首先在 IB 中创建)。

关于ios - WKWebView 委托(delegate)问题(使用 Swift 的 Xcode 7.3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37078647/

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