Ricerca…


Osservazioni

Funzioni del delegato di UIWebView: -

Objective-C Declerations

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

Creare un'istanza UIWebView

veloce

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

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

Fare una richiesta di URL

Carica contenuto in WebView dal url

veloce

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

Objective-C

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

Interrompere il caricamento di contenuto Web

Metodo stopLoading() interrompe il processo di caricamento corrente della webview.

veloce

webview.stopLoading()

Objective-C

[webview stopLoading];

Ricarica il contenuto Web corrente

veloce

webview.reload()

Objective-C

[webview reload];

Determinazione della dimensione del contenuto

In molti casi, ad esempio quando si utilizzano viste Web in celle di visualizzazione tabella, è importante determinare la dimensione del contenuto della pagina HTML renderizzata. Dopo aver caricato la pagina, questo può essere calcolato nel metodo delegato 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);
}

Il codice impiega un ulteriore trucco per impostare brevemente l'altezza della visualizzazione web su 1 prima di misurare la dimensione del raccordo. Altrimenti riporterebbe semplicemente la dimensione attuale del frame. Dopo la misurazione, impostiamo immediatamente l'altezza all'altezza del contenuto effettivo.

fonte

Carica una stringa HTML

Le visualizzazioni Web sono utili per caricare stringhe HTML generate localmente.

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

veloce

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

È possibile specificare un URL di base locale. È utile per fare riferimento a immagini, fogli di stile o script dal pacchetto di app:

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 questo caso, style.css viene caricato localmente dalla directory delle risorse dell'app. Ovviamente è anche possibile specificare un URL remoto.

Carica JavaScript

Possiamo eseguire JavaScript personalizzato su un UIWebView usando il metodo stringByEvaluatingJavaScriptFromString() . Questo metodo restituisce il risultato dell'esecuzione dello script JavaScript passato nel parametro dello script, o zero se lo script non riesce.

veloce

Carica script da String

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

Carica lo script dal file locale

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

Objective-C

Carica script da String

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

Carica lo script dal file locale

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

Nota stringByEvaluatingJavaScriptFromString: metodo attende in modo sincrono il completamento della valutazione JavaScript. Se carichi contenuti web di cui non hai controllato il codice JavaScript, l'attivazione di questo metodo potrebbe bloccare la tua app. È consigliabile adottare la classe WKWebView e utilizzare invece il metodo evaluateJavaScript:completionHandler: . Ma WKWebView è disponibile da iOS 8.0 e versioni successive.

Carica file di documenti come .pdf, .txt, .doc ecc.

Invece di pagine Web, possiamo anche caricare i file di documento in iOS WebView come .pdf, .txt, .doc ecc. loadData metodo loadData viene utilizzato per caricare NSData in webview.

veloce

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

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

Crea collegamenti che all'interno di UIWebview cliccabili

inserisci la descrizione dell'immagine qui

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

Carica il file HTML locale in webView

Innanzitutto, aggiungi il file HTML al tuo progetto (se ti viene chiesto di scegliere le opzioni per aggiungere il file, seleziona Copia gli elementi se necessario )

La seguente riga di codice carica il contenuto del file HTML nel webView

webView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("YOUR HTML FILE", ofType: "html")!})
  • Se il tuo file HTML è chiamato index.html, sostituisci il TUO FILE HTML con l' indice
  • È possibile utilizzare questo codice in viewDidLoad () o viewDidAppear () o qualsiasi altra funzione


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow