Recherche…


Remarques

Fonctions déléguées UIWebView: -

Décélérations Objective-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;

Créer une instance UIWebView

Rapide

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

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

Faire une demande d'URL

Charger le contenu dans WebView à partir de l' url

Rapide

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

Objectif c

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

Arrêtez de charger le contenu Web

La méthode stopLoading() arrête le processus de chargement en cours de la vue Web.

Rapide

webview.stopLoading()

Objectif c

[webview stopLoading];

Recharger le contenu Web actuel

Rapide

webview.reload()

Objectif c

[webview reload];

Détermination de la taille du contenu

Dans de nombreux cas, par exemple lors de l'utilisation de vues Web dans des cellules de vue tableau, il est important de déterminer la taille du contenu de la page HTML rendue. Après avoir chargé la page, cela peut être calculé dans la méthode déléguée 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);
}

Le code utilise une astuce supplémentaire pour régler rapidement la hauteur de la vue Web à 1 avant de mesurer la taille du raccord. Sinon, il rapporterait simplement la taille de l'image actuelle. Après la mesure, nous réglons immédiatement la hauteur à la hauteur réelle du contenu.

La source

Charger une chaîne HTML

Les vues Web sont utiles pour charger des chaînes HTML générées localement.

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

Rapide

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

Une URL de base locale peut être spécifiée. Ceci est utile pour référencer des images, des feuilles de style ou des scripts du lot d'applications:

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

Dans ce cas, style.css est chargé localement à partir du répertoire de ressources de l'application. Bien sûr, il est également possible de spécifier une URL distante.

Charger JavaScript

Nous pouvons exécuter du code JavaScript personnalisé sur un UIWebView à l'aide de la méthode stringByEvaluatingJavaScriptFromString() . Cette méthode renvoie le résultat de l'exécution du script JavaScript transmis dans le paramètre de script, ou nul si le script échoue.

Rapide

Charger le script depuis la chaîne

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

Charger le script à partir du fichier local

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

Objectif c

Charger le script depuis la chaîne

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

Charger le script à partir du fichier local

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

Remarque La méthode stringByEvaluatingJavaScriptFromString: attend que l'évaluation de JavaScript soit terminée. Si vous chargez du contenu Web dont vous n'avez pas vérifié le code JavaScript, l'appel de cette méthode risque de bloquer votre application. La meilleure pratique consiste à adopter la classe WKWebView et à utiliser la WKWebView evaluateJavaScript:completionHandler: place. Mais WKWebView est disponible depuis iOS 8.0 et versions ultérieures.

Charger des fichiers de documents comme .pdf, .txt, .doc, etc.

Au lieu de pages Web, nous pouvons également charger les fichiers de document dans iOS WebView comme .pdf, .txt, .doc, etc. loadData méthode loadData est utilisée pour charger NSData dans Webview.

Rapide

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

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

Créer des liens cliquables dans UIWebview

entrer la description de l'image ici

Dans vc.h

@interface vc : UIViewController<UIWebViewDelegate>

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

Charger le fichier HTML local dans webView

Tout d'abord, ajoutez le fichier HTML à votre projet (si vous êtes invité à choisir des options pour ajouter le fichier, sélectionnez Copier les éléments si nécessaire ).

La ligne de code suivante charge le contenu du fichier HTML dans le WebView

webView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("YOUR HTML FILE", ofType: "html")!})
  • Si votre fichier HTML s'appelle index.html, remplacez votre fichier HTML par un index
  • Vous pouvez utiliser ce code dans viewDidLoad () ou viewDidAppear () ou toute autre fonction


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow