Ich habe eine Webansicht innerhalb meiner App. Ich bin derzeit auf der Suche bei jeder Anfrage und sehen, ob sie ein YouTube-Video, bevor ermöglicht/Aufheben die Anfrage ist:Swift + iOS: Wie kann die Schließung innerhalb eines asynchronen Anrufs aufgerufen werden?
extension WebBrowserViewController: WKNavigationDelegate {
func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
if (urlVideoType(webView.URL!) != VideoUrl.Unknown && urlVideoType(webView.URL!) != VideoUrl.Youtube) {
...
} else if urlVideoType(webView.URL!) == VideoUrl.Youtube {
// the success and failure part don't work
presentYoutubeVideoIfAvailable(webView.URL!, success: decisionHandler(.Cancel), failure: decisionHandler(.Allow)) <-------------------
} else {
decisionHandler(.Allow)
}
}
}
Meine presentYoutubeVideoIfAvailable
Methode verwendet diesen YouTube-URL-Parser pod: https://github.com/movielala/YoutubeSourceParserKit
jedoch, dass eine macht Asynchron-Anruf, und ich weiß nicht, wie sie den Erfolg und Misserfolg Methoden in meiner Methode machen nennen:
func presentYoutubeVideoIfAvailable(url: NSURL, success:(), failure:()) {
Youtube.h264videosWithYoutubeURL(url) { [unowned self] (videoInfo, _) -> Void in
switch videoInfo?["url"] as? String {
case .Some(let videoUrlString):
VideoStore.addVideo(url.absoluteString, title: videoInfo?["title"] as? String ?? "Unknown")
success
self.presentVideo(NSURL(string: videoUrlString)!)
case .None:
print("herereee") // gets printed, so I know it's here
failure // doesn't do anything. it should be allowing the request but it isn't <-----------------------------------
self.showError(.YoutubeParsingFail)
}
}
}
ich will es so, dass, wenn die youtube-pod eine uRL zurückgibt, sollte es die Web-Ansicht Anfrage abbrechen, und wenn es fa Ich möchte, dass es mit der Anfrage fortfährt. Wie würde ich das tun?
werden muss 'Erfolg()' und 'Fehler()' Sie sind nicht wirklich die Verschlüsse aufrufen. – sbarow