2016-03-21 33 views
2

kullanarak javascript ile hızlı işlev çağrısı Bu sorulmuşsa özür dilerim, ancak herhangi bir cevap veya çözüm bulamadım. Bir "UIWebView" dan bir JavaScript işlevi aramak ve hızlı bir şekilde dinlemek için arıyorum. Bulduğum herhangi bir örnek "WKWebView" kullanıyor.UIWebview

// HTML/JS 
<div id ="myDiv" onclick="listenInSwift()">myItem</div> 

bir UIWebView ile bu mümkün mü: Aşağıdaki gibi bir JavaScript işlevi dinlemek için kolay bir yol olmalı? Hepinize teşekkürler!

function listenInSwift() { 
    window.location = 'yoururlscheme://somehost?greeting=hello' 
} 

Sonra UIWebViewDelegate sınıfında bu kodla Bu URL için dinlemek:

func webView(_ webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType navigationType: UIWebViewNavigationType) -> Bool { 
    if request.URL.scheme == 'yoururlscheme' { 
     print('Hello JavaScript...') 
    } 
} 

bu durumda (URL Scheme kayıt unutma '

cevap

9

böyle listenInSwift uygulayın Xcode içinde yoururlscheme ').

web görünümündeki yerel bir dosya yüklemek için, bu deneyin:

let baseURL = NSURL.fileURLWithPath(NSBundle.mainBundle().bundlePath); 
let relativePath = "www/\(file)" 
let fileURL = NSURL(string: relativePath, relativeToURL: baseURL); 
let URLRequest = NSURLRequest(URL: fileURL!); 
webView.loadRequest(URLRequest) 
+0

Teşekkürler Paulvs, url şeması yerel ise bu işe yarayacak mı? Xocde'ye gömülmüş html dosyasına yerel yolu nasıl alabilirim? – user3612986

+0

URL Düzeni yerel olmalıdır (nasıl oluşturulacağı için, [buraya bakın] (https://dev.twitter.com/cards/mobile/url-schemes)). – paulvs

+0

OS X '' Swift'de 'UIWebView' eşdeğeri nedir? OS X için kodlama yaparken 'UIKit' içe aktarılamıyor. Ve 'WebKit', tanımladığınız işlevi gerçekleştirmiyor. – dbconfession

0

bu benim için iyi çalıştı:

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { 
    if request.url?.scheme == "com.example.app" { 
     print("I’m some JavaScript hoho") 
    } 

    return true 
} 

Not: Eğer "com.example.app" eklemek zorunda veya xcode proje ayarlarınızda ne varsa. Bilgiye gidin, aşağı kaydırın ve URL Şeması'nı bulun. İstediğiniz düzeni buraya ekleyin. Diğer şeyleri olduğu gibi bırak. O zaman iyi çalışır.