2012-06-01 14 views
5

Die Frage klingt komisch, aber hier ist mein Fall.Schließen Sie UIWebView mit javascript: window.close();

Ich habe eine UIWebView in meinem UIView (getan von [self.view addSubview:webView];), die Vollbild besetzt. Es verbirgt absichtlich die UIView vor der UIWebView Klicks auf eine Aktion javascript:window.close();.

Wie assoziiere ich JavaScript in UIWebView Seite zu UIView Aktion, z. [webView removeFromSuperView];?

Antwort

7

Dies ist möglich:

den Ort etwas mit Ihrem eigenen Schema in der URL-Satz, dh

document.location.href = "myscheme: // DoSomething"

Dies führt dazu, Die UIWebViewDelegate-Methode sollteStartLoadWithRequest: mit einem NSURLRequest-Parameter aufgerufen werden, dessen Schema "myscheme" lautet. Also suchst du nach diesem Schema und extrahierst das DoSomething und handelst dann auf das DoSomething, welches in deinem Fall den Aufruf von SuperView entfernen würde.

(In der UIWebView muss dealloc wahrscheinlich sicherstellen, dass Sie stopLoading aufrufen)

+0

klingt, dass es funktionieren würde. Lass mich einen Test machen und komme zu euch zurück. – Raptor

+1

Erfolg! Eigentlich keine Notwendigkeit, URL Scheme zu verwenden. Machen Sie einfach ein Muster in URL und lesen Sie das Muster in '[NSURL path]' mit 'shouldStartLoadWithRequest:'. Behandeln Sie das Muster mit unterschiedlicher Logik (Sie können sogar Variablen mit Abfragezeichenfolge übergeben (von coz, POST-Werte können nicht gelesen werden). – Raptor

Verwandte Themen