2012-06-01 13 views
5

Pytanie brzmi dziwnie, ale oto moja sprawa.Zamknij interfejs UIWebView za pomocą javascript: window.close();

Mam UIWebView w moim (wykonane przez [self.view addSubview:webView];), który zajmuje pełny ekran. Celowo ukrywa on UIView przed kliknięciami UIWebView kliknięć akcji javascript:window.close();.

Jak powiązać JavaScript w działaniu z UIWebView do UIView, np. [webView removeFromSuperView];?

Odpowiedz

7

Jest to możliwe:

Ustaw lokalizację, aby coś z własnego programu w adresie URL, czyli

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

Spowoduje to metoda UIWebViewDelegate shouldStartLoadWithRequest: do wywołania z parametrem NSURLRequest, którego schemat to "myscheme". Poszukujesz więc tego schematu i wyodrębniasz DoSomething, a następnie działasz na DoSomething, które w twoim przypadku byłoby wywołać remove z superView.

(W przypadku dealloc w systemie UIWebView prawdopodobnie trzeba się upewnić, że wywoływany jest stopLoading)

+0

brzmi, że to zadziała. Pozwól mi zrobić test i wrócić do was. – Raptor

+1

Sukces! W rzeczywistości nie ma potrzeby korzystania ze schematu adresów URL. Po prostu utwórz wzór w adresie URL, a następnie odczytaj wzorzec w '[NSURL path]' 'shouldStartLoadWithRequest:'. Obsługuj wzorzec za pomocą innej logiki (możesz nawet przekazywać zmienne za pomocą ciągu zapytania (coz, wartości POST nie można odczytać). – Raptor

Powiązane problemy