2013-04-14 4 views
3

Я использую UIWebView в своем приложении. Я хочу вызвать функцию object-c, когда пользователь нажимает ссылку на веб-сайте в UIWebView. Есть ли способ сделать это? Может ли UIWebView изменить его?Как манипулировать DOM в UIWebView в iOS

+0

Чтобы изменить что? – 2013-04-14 15:09:48

+0

Я просто хочу вызвать функцию object-c, когда пользователь нажимает ссылку в UIWebView. – cmltkt

+0

Вы можете сделать это с помощью метода 'webView: shouldStartLoadWithRequest: navigationType:' delegate. – 2013-04-14 15:13:30

ответ

7

Первый крючок. [yourwebview setDelegate:self]

Используйте следующий метод делегата

webView:shouldStartLoadWithRequest:navigationType 

Как:

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { 
    NSURL *url = request.URL; 
    NSString *urlString = url.absoluteString; 
    //put your logic here, like 
    if (![url.scheme isEqual:@"yourscheme"]) {// or query contains or [url absolutestring] contains etc 
     return NO; 
    } 
    return YES; 
} 

Если вы хотите, чтобы манипулировать DOM или вызвать любую функцию UIWebView, а затем использовать:

[yourwebView stringByEvaluatingJavaScriptFromString:@"alert('hello')"]; 
[yourwebView stringByEvaluatingJavaScriptFromString:@"$('#domid').hide();"]; 
0

Просто как указано в других ответах, вы должны использовать делегат webview

webView:shouldStartLoadWithRequest:navigationType 

метод для контрабанды некоторых данных из WebView. Вы можете прочитать мой подробный ответ на эту тему здесь: how to use javascript in uiwebview to get the clicked button id?

Смежные вопросы