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.
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
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