Suche…


Bemerkungen

UIWebView Delegate-Funktionen: -

Objective-C-Deklarationen

- (BOOL)webView:(UIWebView *)webView 
shouldStartLoadWithRequest:(NSURLRequest *)request 
 navigationType:(UIWebViewNavigationType)navigationType;

- (void)webView:(UIWebView *)webView 
didFailLoadWithError:(NSError *)error;

- (void)webViewDidFinishLoad:(UIWebView *)webView;

- (void)webViewDidStartLoad:(UIWebView *)webView;

Erstellen Sie eine UIWebView-Instanz

Schnell

let webview = UIWebView(frame: CGRect(x: 0, y: 0, width: 320, height: 480))

Ziel c

UIWebView *webview = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];

//Alternative way of defining frame for UIWebView
UIWebView *webview = [[UIWebView alloc] init];
CGRect webviewFrame = webview.frame;
webviewFrame.size.width = 320;
webviewFrame.size.height = 480;
webviewFrame.origin.x = 0;
webviewFrame.origin.y = 0;
webview.frame = webviewFrame;

URL-Anfrage stellen

Laden Sie Inhalte aus der url in die Webansicht

Schnell

webview.loadRequest(NSURLRequest(URL: NSURL(string: "http://www.google.com")!))

Ziel c

[webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];

Laden Sie keine Webinhalte mehr

Die Methode stopLoading() stoppt den aktuellen Ladevorgang der Webansicht.

Schnell

webview.stopLoading()

Ziel c

[webview stopLoading];

Laden Sie den aktuellen Webinhalt neu

Schnell

webview.reload()

Ziel c

[webview reload];

Festlegen der Inhaltsgröße

In vielen Fällen, z. B. bei der Verwendung von Webansichten in Tabellensichtzellen, ist es wichtig, die Inhaltsgröße der gerenderten HTML-Seite zu bestimmen. Nach dem Laden der Seite kann dies in der UIWebViewDelegate Delegatenmethode berechnet werden:

- (void) webViewDidFinishLoad:(UIWebView *) aWebView {
    CGRect frame = aWebView.frame;
    frame.size.height = 1;
    aWebView.frame = frame;
    CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];
    frame.size = fittingSize;
    aWebView.frame = frame;

    NSLog(@"size: %f, %f", fittingSize.width, fittingSize.height);
}

Der Code wendet einen zusätzlichen Trick an, die Höhe der Bahnansicht vor dem Messen der Fittinggröße kurz auf 1 zu setzen. Andernfalls würde einfach die aktuelle Bildgröße angegeben. Nach der Messung stellen wir sofort die Höhe auf die tatsächliche Inhaltshöhe ein.

Quelle

Laden Sie den HTML-String

Webansichten sind nützlich, um lokal generierte HTML-Zeichenfolgen zu laden.

NSString *html = @"<!DOCTYPE html><html><body>Hello World</body></html>";
[webView loadHTMLString:html baseURL:nil];

Schnell

  let htmlString = "<h1>My First Heading</h1><p>My first paragraph.</p>"
  webView.loadHTMLString(htmlString, baseURL: nil)

Eine lokale Basis-URL kann angegeben werden. Dies ist nützlich, um auf Bilder, Stylesheets oder Skripts aus dem Anwendungspaket zu verweisen:

NSString *html = @"<!DOCTYPE html><html><head><link href='style.css' rel='stylesheet' type='text/css'></head><body>Hello World</body></html>";
[self loadHTMLString:html baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath]]];

In diesem Fall wird style.css lokal aus dem Ressourcenverzeichnis der App geladen. Natürlich kann auch eine Remote-URL angegeben werden.

Laden Sie JavaScript

Wir können benutzerdefiniertes JavaScript für eine UIWebView mit der Methode stringByEvaluatingJavaScriptFromString() ausführen. Diese Methode gibt das Ergebnis der Ausführung des im Script-Parameter übergebenen JavaScript-Scripts zurück.

Schnell

Skript aus String laden

webview.stringByEvaluatingJavaScriptFromString("alert('This is JavaScript!');")

Skript aus lokaler Datei laden

//Suppose you have javascript file named "JavaScript.js" in project.
let filePath = NSBundle.mainBundle().pathForResource("JavaScript", ofType: "js")
        do {
            let jsContent = try String.init(contentsOfFile: filePath!, encoding: NSUTF8StringEncoding)
            webview.stringByEvaluatingJavaScriptFromString(jsContent)
        }
        catch let error as NSError{
            print(error.debugDescription)
        }

Ziel c

Skript aus String laden

[webview stringByEvaluatingJavaScriptFromString:@"alert('This is JavaScript!');"];

Skript aus lokaler Datei laden

//Suppose you have javascript file named "JavaScript.js" in project.
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"JavaScript" ofType:@"js"];
NSString *jsContent = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
[webview stringByEvaluatingJavaScriptFromString:jsContent];

Hinweis Die Methode stringByEvaluatingJavaScriptFromString: wartet synchron, bis die JavaScript-Bewertung abgeschlossen ist. Wenn Sie Webinhalte laden, deren JavaScript-Code Sie nicht überprüft haben, könnte der Aufruf dieser Methode Ihre App aufhängen. Es WKWebView , die WKWebView Klasse zu übernehmen und stattdessen die Methode WKWebView evaluateJavaScript:completionHandler: verwenden. WKWebView ist jedoch ab iOS 8.0 verfügbar.

Laden Sie Dokumentdateien wie .pdf, .txt, .doc usw.

Anstelle von Webseiten können wir die Dokumentdateien auch in iOS WebView wie PDF, TXT, DOC usw. loadData . Die loadData Methode wird zum Laden von NSData in WebView verwendet.

Schnell

//Assuming there is a text file in the project named "home.txt".
let localFilePath = NSBundle.mainBundle().pathForResource("home", ofType:"txt");
let data = NSFileManager.defaultManager().contentsAtPath(localFilePath!);
webview.loadData(data!, MIMEType: "application/txt", textEncodingName:"UTF-8" , baseURL: NSURL())

Ziel c

//Assuming there is a text file in the project named "home.txt".
NSString *localFilePath = [[NSBundle mainBundle] pathForResource:@"home" ofType:@"txt"];
NSData *data = [[NSFileManager defaultManager] contentsAtPath:localFilePath];
[webview loadData:data MIMEType:@"application/txt" textEncodingName:@"UTF-8" baseURL:[NSURL new]];

Machen Sie Links, die in UIWebview anklickbar sind

Geben Sie hier die Bildbeschreibung ein

In vc.h

@interface vc : UIViewController<UIWebViewDelegate>

in vc.m

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
    
    
    if (navigationType == UIWebViewNavigationTypeLinkClicked){
        //open it on browser if you want to open it in same web view remove return NO;
        NSURL *url = request.URL;
        if ([[UIApplication sharedApplication] canOpenURL:url]) {
            [[UIApplication sharedApplication] openURL:url];
        }
        return NO;
        
    }
    
    return YES;
    
}

Lokale HTML-Datei in WebView laden

Fügen Sie zunächst die HTML-Datei zu Ihrem Projekt hinzu. (Wenn Sie gefragt werden, ob Sie Optionen zum Hinzufügen der Datei auswählen möchten , wählen Sie ggf. Elemente kopieren. )

Die folgende Codezeile lädt den Inhalt der HTML-Datei in die Webansicht

webView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("YOUR HTML FILE", ofType: "html")!})
  • Wenn Ihre HTML-Datei index.html heißt, ersetzen Sie IHRE HTML-DATEI durch den Index
  • Sie können diesen Code entweder in viewDidLoad () oder viewDidAppear () oder in einer anderen Funktion verwenden


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow