Szukaj…


Uwagi

Funkcje delegowania UIWebView: -

Deklaracje celu C

- (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;

Utwórz instancję UIWebView

Szybki

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

Cel 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;

Zgłaszanie żądania adresu URL

Załaduj zawartość do widoku internetowego z adresu url

Szybki

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

Cel C

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

Zatrzymaj ładowanie treści internetowych

Metoda stopLoading() zatrzymuje bieżący proces ładowania stopLoading() strony.

Szybki

webview.stopLoading()

Cel C

[webview stopLoading];

Załaduj ponownie bieżącą zawartość internetową

Szybki

webview.reload()

Cel C

[webview reload];

Określanie rozmiaru treści

W wielu przypadkach, na przykład podczas korzystania z widoków internetowych w komórkach widoku tabeli, ważne jest określenie rozmiaru zawartości renderowanej strony HTML. Po załadowaniu strony można to obliczyć w metodzie delegowania UIWebViewDelegate :

- (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);
}

Kod wykorzystuje dodatkową sztuczkę polegającą na krótkim ustawieniu wysokości widoku internetowego na 1 przed zmierzeniem rozmiaru dopasowania. W przeciwnym razie po prostu zgłosiłby bieżący rozmiar ramki. Po pomiarze natychmiast ustawiamy wysokość na rzeczywistą wysokość zawartości.

Źródło

Załaduj ciąg HTML

Widoki internetowe są przydatne do ładowania lokalnie generowanych ciągów HTML.

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

Szybki

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

Można określić lokalny podstawowy adres URL. Jest to przydatne w odniesieniu do obrazów, arkuszy stylów lub skryptów z pakietu aplikacji:

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]]];

W takim przypadku style.css jest ładowany lokalnie z katalogu zasobów aplikacji. Oczywiście możliwe jest również określenie zdalnego adresu URL.

Załaduj JavaScript

Możemy uruchomić niestandardowy JavaScript na UIWebView przy użyciu metody stringByEvaluatingJavaScriptFromString() Ta metoda zwraca wynik uruchomienia skryptu JavaScript przekazanego w parametrze script lub zero, jeśli skrypt się nie powiedzie.

Szybki

Załaduj skrypt z String

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

Załaduj skrypt z pliku lokalnego

//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)
        }

Cel C

Załaduj skrypt z String

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

Załaduj skrypt z pliku lokalnego

//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];

Uwaga Metoda stringByEvaluatingJavaScriptFromString: metoda synchronicznie czeka na zakończenie oceny JavaScript. Jeśli załadujesz zawartość internetową, której kodu JavaScript nie sprawdziłeś, wywołanie tej metody może zawiesić aplikację. Najlepszym rozwiązaniem jest przyjęcie WKWebView klasę i używać jej evaluateJavaScript:completionHandler: metodę zamiast. Ale WKWebView jest dostępny z iOS 8.0 i nowszych.

Załaduj pliki dokumentów, takie jak .pdf, .txt, .doc itp.

Zamiast stron internetowych możemy również załadować pliki dokumentów do iOS WebView, takie jak .pdf, .txt, .doc itp. Metoda loadData służy do załadowania NSData do przeglądarki internetowej.

Szybki

//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())

Cel 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]];

Niech klikalne będą linki wewnątrz UIWebview

wprowadź opis zdjęcia tutaj

W vc.h

@interface vc : UIViewController<UIWebViewDelegate>

w 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;
    
}

Załaduj lokalny plik HTML do webView

Najpierw dodaj plik HTML do swojego projektu (jeśli zostaniesz poproszony o wybranie opcji dodania pliku, wybierz Kopiuj elementy w razie potrzeby )

Poniższy wiersz kodu ładuje zawartość pliku HTML do webView

webView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("YOUR HTML FILE", ofType: "html")!})
  • Jeśli plik HTML nazywa się index.html, zastąp SWÓJ PLIK HTML indeksem
  • Można użyć tego kodu albo w viewDidLoad () lub viewDidAppear () lub jakiejkolwiek innej funkcji


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow