Zoeken…


Opmerkingen

UIWebView Delegate-functies: -

Objective-C-decleraties

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

Maak een UIWebView-instantie

Snel

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

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

Een URL aanvraag doen

Laad inhoud in webview vanuit de url

Snel

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

Doelstelling C

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

Stop met het laden van webinhoud

Methode stopLoading() stopt het huidige laadproces van de webview.

Snel

webview.stopLoading()

Doelstelling C

[webview stopLoading];

Huidige webinhoud opnieuw laden

Snel

webview.reload()

Doelstelling C

[webview reload];

Inhoud bepalen

In veel gevallen, bijvoorbeeld bij het gebruik van webweergaven in tabelweergavecellen, is het belangrijk om de inhoudsgrootte van de gerenderde HTML-pagina te bepalen. Na het laden van de pagina kan dit worden berekend met de UIWebViewDelegate delegatiemethode:

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

De code gebruikt een extra truc om de hoogte van het webaanzicht kort in te stellen op 1 voordat de pasmaat wordt gemeten. Anders zou het gewoon de huidige framegrootte weergeven. Na het meten stellen we de hoogte onmiddellijk in op de werkelijke inhoudshoogte.

Bron

Laad HTML-string

Webweergaven zijn handig om lokaal gegenereerde HTML-reeksen te laden.

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

Snel

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

Er kan een lokale basis-URL worden opgegeven. Dit is handig om te verwijzen naar afbeeldingen, stylesheets of scripts uit de app-bundel:

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 dit geval wordt style.css lokaal geladen vanuit de style.css van de app. Natuurlijk is het ook mogelijk om een externe URL op te geven.

Laad JavaScript

We kunnen aangepast JavaScript op een UIWebView met de methode stringByEvaluatingJavaScriptFromString() Deze methode retourneert het resultaat van het uitvoeren van het JavaScript-script dat is doorgegeven in de scriptparameter, of nul als het script mislukt.

Snel

Laad script uit String

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

Laad script uit lokaal bestand

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

Doelstelling C

Laad script uit String

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

Laad script uit lokaal bestand

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

Opmerking De stringByEvaluatingJavaScriptFromString: methode wacht synchroon totdat de JavaScript-evaluatie is voltooid. Als u webinhoud laadt waarvan u de JavaScript-code niet hebt gecontroleerd, kan uw app worden opgehangen als u deze methode gebruikt. Het wordt WKWebView om de WKWebView klasse over te nemen en in plaats daarvan de methode WKWebView evaluateJavaScript:completionHandler: te gebruiken. Maar WKWebView is beschikbaar vanaf iOS 8.0 en hoger.

Laad documentbestanden zoals .pdf, .txt, .doc etc.

In plaats van webpagina's kunnen we ook de documentbestanden in iOS WebView laden, zoals .pdf, .txt, .doc enz. loadData methode loadData wordt gebruikt om NSData in webview te laden.

Snel

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

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

Maak koppelingen binnen UIWebview klikbaar

voer hier de afbeeldingsbeschrijving in

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

Laad lokaal HTML-bestand in webView

Voeg eerst het HTML-bestand toe aan uw project (als u wordt gevraagd om opties te kiezen voor het toevoegen van het bestand, selecteert u Items kopiëren indien nodig )

De volgende coderegel laadt de inhoud van het HTML-bestand in de webView

webView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("YOUR HTML FILE", ofType: "html")!})
  • Als uw HTML-bestand index.html wordt genoemd, vervang dan UW HTML-BESTAND door index
  • U kunt deze code gebruiken in viewDidLoad () of viewDidAppear () of een andere functie


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow