2016-07-02 12 views
0

Ich möchte die Website in UiWebView anzeigen, aber ich muss nicht alle Website anzeigen, sondern nur von <section id="xxx"> zu </section> mit optional für CSS-Stile. Ich habe versucht, HTML-Code herunterladen und fügen Sie es in UiWebViewWie zeige ich nur einen Teil der Website in UiWebView?

aber es hat nicht funktioniert für mich. Irgendwelche Ideen? Danke für die Hilfe!

Antwort

0

Sie können folgendes tun:

erstellen 2 UIWebViews in Ihrem Viewcontroller, webView und webView2, implementieren @interface ViewController : UIViewController <UIWebViewDelegate> in Ihrem Viewcontroller-Header.

In viewDidAppear Sie die fullHTMLString von der Seite geladen wird, möchten Sie mit in webView2 arbeiten und setzen danach die Delegierten für webView2 wie so:

-(void)viewDidAppear:(BOOL)animated 
{ 
    NSString *fullHTMLString = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"https://python.org"] encoding:NSASCIIStringEncoding error:nil]; 

    [self.webView2 setHidden:YES]; 
    [self.webView2 loadHTMLString:fullHTMLString baseURL:nil]; 
    [self.webView2 setDelegate: self]; 
} 

Sie müssen webViewDidFinishLoad Delegatmethode, implementieren und in Sie rufen [stringByEvaluatingJavaScriptFromString], die Ihr gewünschtes einzelnes Element basierend auf Parametern erhalten Sie geben es.

In diesem Beispiel wählte ich, um es durch ElementID abrufen, können Sie Javascript verwenden, um es auf andere Weise abrufen.

Sobald Sie Ihr gewünschtes Element zum Anzeigen haben, erstellen Sie einen HTML-String und fügen ihn ein. Danach laden Sie den vollständigen HTML-Code mit dem einzelnen Element in das erste WebView (webView und nicht webView2) Endlosschleife beim Aufruf der Delegate-Methode.

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString *singleElementString = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById(\"mainnav\").innerHTML;"]; 
    NSString *html = [[NSString alloc] initWithFormat:@"<html>%@</html>", singleElementString]; 
    [self.webView loadHTMLString:html baseURL:nil]; 
} 
Verwandte Themen