Swift UIWebView shouldStartLoadWithRequest在iOS8中不会触发

我有一个UIWebView,预期会在作为初始页面加载的login页面成功login后返回一个自定义URL。

自定义url是appevent://

除了iOS8.X(即iOS9.X及以上版本)以外,

笔记详细

  1. 使用webview委托方法' shouldStartLoadWithRequest '。
  2. 初始URL正常加载,用户input用户名和密码。
  3. 在一个成功的事件中,webview javascript给了后面的window.location.href appevent://{"something"}

使用下面的代码,我进一步处理我收到的数据appevent

 public func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { let urlScheme = request.URL?.scheme if urlScheme == "appevent" { let urlString = request.URL!.absoluteString! let startIndex = urlString.rangeOfString("appevent://", options: .BackwardsSearch)?.endIndex let payload = (urlString.substringFromIndex(startIndex!)) .stringByReplacingPercentEscapesUsingEncoding(NSWindowsCP1252StringEncoding)! handleAppEvent(payload) return false } return true } 
  1. 以上在iOS9.X +中运行良好,但在iOS8.X中不能运行

在iOS8.X中,login成功后,即在shouldStartLoadWithRequest被appevent再次触发的地方,什么都不会发生。

在webview中添加日志来查看它是否在某个地方崩溃,并且appevent从未被收到。 但事实并非如此 – 这个解决scheme是成功的,但在我的应用程序中没有任何反应。

有人可以指出问题在哪里? 或者如何进一步debugging呢?