Sök…


Anmärkningar

UIWebView Delegate-funktioner: -

Objektiva C-deklarationer

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

Skapa en UIWebView-instans

Snabb

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;

Skapa en URL-begäran

Ladda innehåll i webbvisning från url

Snabb

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

Objective-C

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

Sluta ladda webbinnehåll

Metod stopLoading() stoppar den aktuella laddningsprocessen för webbvyn.

Snabb

webview.stopLoading()

Objective-C

[webview stopLoading];

Ladda om aktuellt webbinnehåll

Snabb

webview.reload()

Objective-C

[webview reload];

Bestämma innehållsstorlek

I många fall, till exempel när du använder webbvyer i tabellvyceller, är det viktigt att bestämma innehållsstorleken på den återgivna HTML-sidan. Efter laddning av sidan kan detta beräknas med 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);
}

Koden använder ett ytterligare trick för att kort inställa höjden på webbsidan till 1 innan mätstorleken mäts. Annars rapporterar den helt enkelt den aktuella bildstorleken. Efter mätning ställer vi omedelbart höjden på den faktiska innehållshöjden.

Källa

Ladda HTML-sträng

Webbvyer är användbara för att ladda lokalt genererade HTML-strängar.

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

Snabb

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

En lokal webbadress kan anges. Detta är användbart för att referera till bilder, stilark eller skript från appbunten:

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

I detta fall laddas style.css lokalt från appens resurskatalog. Naturligtvis är det också möjligt att ange en fjärradress.

Ladda JavaScript

Vi kan köra anpassad JavaScript på en UIWebView hjälp av metoden stringByEvaluatingJavaScriptFromString() Den här metoden returnerar resultatet av att köra JavaScript-skriptet som UIWebView i stringByEvaluatingJavaScriptFromString() , eller noll om skriptet misslyckas.

Snabb

Ladda skript från String

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

Ladda skript från lokal fil

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

Ladda skript från String

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

Ladda skript från lokal fil

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

Obs! stringByEvaluatingJavaScriptFromString: -metoden väntar synkront för att JavaScript-utvärderingen ska slutföras. Om du laddar webbinnehåll vars JavaScript-kod du inte har vettat kan du använda din metod att hänga din app. Bästa praxis är att anta WKWebView klassen och använda dess evaluateJavaScript:completionHandler: -metod istället. Men WKWebView är tillgängligt från iOS 8.0 och senare.

Ladda dokumentfiler som .pdf, .txt, .doc etc.

Istället för webbsidor kan vi också ladda dokumentfilerna i iOS WebView som .pdf, .txt, .doc osv. loadData metoden används för att ladda NSData i webview.

Snabb

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

Gör länkar som finns i UIWebview klickbara

ange bildbeskrivning här

I vc.h

@interface vc : UIViewController<UIWebViewDelegate>

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

Ladda lokal HTML-fil i webView

Lägg först HTML-filen till ditt projekt (om du blir ombedd att välja alternativ för att lägga till filen, välj Kopiera objekt vid behov )

Följande kodrad laddar in HTML-filens innehåll i webView

webView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("YOUR HTML FILE", ofType: "html")!})
  • Om din HTML-fil heter index.html, ersätt DIN HTML-FIL med index
  • Du kan använda den här koden antingen i viewDidLoad () eller viewDidAppear () eller någon annan funktion


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow