Buscar..


Observaciones

Funciones de delegado 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;

Crear una instancia de UIWebView

Rápido

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

C objetivo

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;

Hacer una solicitud de URL

Cargar contenido en webview desde la url

Rápido

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

C objetivo

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

Dejar de cargar contenido web

El método stopLoading() detiene el proceso de carga actual de la vista web.

Rápido

webview.stopLoading()

C objetivo

[webview stopLoading];

Actualizar contenido web actual

Rápido

webview.reload()

C objetivo

[webview reload];

Determinar el tamaño del contenido

En muchos casos, por ejemplo, cuando se usan vistas web en celdas de vista de tabla, es importante determinar el tamaño del contenido de la página HTML representada. Después de cargar la página, esto se puede calcular en el método de delegado 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);
}

El código emplea un truco adicional de configurar brevemente la altura de la vista web en 1 antes de medir el tamaño del accesorio. De lo contrario, simplemente informaría el tamaño del marco actual. Después de la medición, establecemos inmediatamente la altura a la altura del contenido real.

Fuente

Cargar cadena HTML

Las vistas web son útiles para cargar cadenas HTML generadas localmente.

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

Rápido

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

Se puede especificar una URL base local. Esto es útil para hacer referencia a imágenes, hojas de estilo o scripts del paquete de aplicaciones:

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

En este caso, style.css se carga localmente desde el directorio de recursos de la aplicación. Por supuesto, también es posible especificar una URL remota.

Cargar JavaScript

Podemos ejecutar JavaScript personalizado en un UIWebView usando el método stringByEvaluatingJavaScriptFromString() . Este método devuelve el resultado de ejecutar el script de JavaScript pasado en el parámetro del script, o nil si el script falla.

Rápido

Cargar script desde cadena

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

Cargar script desde archivo 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)
        }

C objetivo

Cargar script desde cadena

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

Cargar script desde archivo 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];

Nota stringByEvaluatingJavaScriptFromString: método stringByEvaluatingJavaScriptFromString: espera sincrónicamente a que se complete la evaluación de JavaScript. Si carga contenido web cuyo código JavaScript no ha examinado, invocar este método podría bloquear su aplicación. La mejor práctica es adoptar la clase WKWebView y usar su método WKWebView evaluateJavaScript:completionHandler: lugar. Pero WKWebView está disponible desde iOS 8.0 y versiones posteriores.

Cargue archivos de documentos como .pdf, .txt, .doc, etc.

En lugar de páginas web, también podemos cargar los archivos de documentos en iOS WebView como .pdf, .txt, .doc, etc. loadData método loadData se utiliza para cargar NSData en webview.

Rápido

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

C objetivo

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

Hacer enlaces que dentro de UIWebview haga clic en

introduzca la descripción de la imagen aquí

En vc.h

@interface vc : UIViewController<UIWebViewDelegate>

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

Cargar archivo HTML local en webView

Primero, agregue el archivo HTML a su proyecto (si se le pide que elija opciones para agregar el archivo, seleccione Copiar elementos si es necesario )

La siguiente línea de código carga el contenido del archivo HTML en el webView

webView.loadRequest(NSURLRequest(URL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("YOUR HTML FILE", ofType: "html")!})
  • Si su archivo HTML se llama index.html, reemplace SU ARCHIVO HTML por índice
  • Puede usar este código en viewDidLoad () o viewDidAppear () o en cualquier otra función


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow