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