iphone - open - uiwebview tutorial
Cómo cargar el archivo html local en UIWebView (17)
Estoy intentando cargar un archivo html en mi UIWebView pero no funcionará. Aquí está la etapa: tengo una carpeta llamada html_files en mi proyecto. Luego creé un webView en el constructor de interfaces y le asigné una salida en viewController. Este es el código que estoy usando para anexar el archivo html:
-(void)viewDidLoad
{
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html" inDirectory:@"html_files"];
NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile];
[webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];
[super viewDidLoad];
}
Eso no funcionará y UIWebView está en blanco. Apreciaría algo de ayuda.
Aquí está Swift 3:
if let htmlFile = Bundle.main.path(forResource: "aa", ofType: "html"){
do{
let htmlString = try NSString(contentsOfFile: htmlFile, encoding:String.Encoding.utf8.rawValue )
messageWebView.loadHTMLString(htmlString as String, baseURL: nil)
}
catch _ {
}
}
Aquí la forma en que funciona el archivo HTML con Jquery.
_webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 320, 568)];
[self.view addSubview:_webview];
NSString *filePath=[[NSBundle mainBundle]pathForResource:@"jquery" ofType:@"html" inDirectory:nil];
NSLog(@"%@",filePath);
NSString *htmlstring=[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
[_webview loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:filePath]]];
or
[_webview loadHTMLString:htmlstring baseURL:nil];
Puede usar las solicitudes para llamar al archivo HTML en su UIWebview
Asegúrese de que "html_files" sea un directorio en el paquete principal de su aplicación, y no solo un grupo en Xcode.
Coloque todos los archivos (html y recursos) en un directorio (para mi "manual"). A continuación, arrastre y suelte el directorio a XCode, sobre "Archivos de soporte". Debería verificar las opciones "Copiar elementos si es necesario" y "Crear referencias de carpeta". Luego, escribe un código simple:
NSURL *url = [[NSBundle mainBundle] URLForResource:@"manual/index" withExtension:@"html"];
[myWebView loadRequest:[NSURLRequest requestWithURL:url]];
Atención a @"manual/index"
, manual es el nombre de mi directorio !! ¡Es todo! Perdón por mi mal ingles...
=============================================== =====================
Hola desde Costa Rica. Ponga los archivos (html y demás recursos) en un directorio (en mi caso lo llamé manual), luego, arrastre y suelte en XCode, sobre "Archivos de soporte". Deberá seleccionar las opciones "Copiar elementos si es necesario" y "Crear referencias de carpeta".
NSURL *url = [[NSBundle mainBundle] URLForResource:@"manual/index" withExtension:@"html"];
[myWebView loadRequest:[NSURLRequest requestWithURL:url]];
Presta atención a @"manual/index"
, manual es el nombre de mi directorio !!
En Swift 2.0, la respuesta de @user478681 podría verse así:
let HTMLDocumentPath = NSBundle.mainBundle().pathForResource("index", ofType: "html")
let HTMLString: NSString?
do {
HTMLString = try NSString(contentsOfFile: HTMLDocumentPath!, encoding: NSUTF8StringEncoding)
} catch {
HTMLString = nil
}
myWebView.loadHTMLString(HTMLString as! String, baseURL: nil)
Para Swift 3 y Swift 4:
let htmlFile = Bundle.main.path(forResource: "name_resource", ofType: "html")
let html = try! String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8)
self.webView.loadHTMLString(html, baseURL: nil)
Puede ser que su archivo HTML no sea compatible con la codificación UTF-8, porque el mismo código me funciona.
O puede también esta línea de código:
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"Notes For Apple" ofType:@"htm" inDirectory:nil];
NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
[WebView loadHTMLString:htmlString baseURL:nil];
Supongo que primero debe allocate
e webview
su vista webview
::
- (void)viewDidLoad
{
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html" inDirectory:@"html_files"];
NSData *htmlData = [NSData dataWithContentsOfFile:htmlFile];
webView = [[UIWebView alloc] init];
[webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:[NSURL URLWithString:@""]];
[super viewDidLoad];
}
Una nueva forma de hacer esto usando swift. UIWebView ya no existe y WKWebView es la nueva clase para cargar páginas web, lo que garantiza las funciones de Safari para la vista web.
import WebKit
let preferences = WKPreferences()
preferences.javaScriptCanOpenWindowsAutomatically = false
let configuration = WKWebViewConfiguration()
configuration.preferences = preferences
let webView = WKWebView(frame: self.view.bounds, configuration: configuration)
let request = NSURLRequest(URL: NSURL(string: "http://nshipster.com"))
webView.loadRequest(request)
con esto puede cargar el archivo html que está en los activos de su proyecto (paquete) a webView.
UIWebView *web = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 460)];
[web loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"test" ofType:@"html"]isDirectory:NO]]];
puede ser que esto te sea útil.
probablemente sea mejor utilizar NSString y cargar el documento html de la siguiente manera:
C objetivo
NSString *htmlFile = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"html"];
NSString* htmlString = [NSString stringWithContentsOfFile:htmlFile encoding:NSUTF8StringEncoding error:nil];
[webView loadHTMLString:htmlString baseURL: [[NSBundle mainBundle] bundleURL]];
Rápido
let htmlFile = NSBundle.mainBundle().pathForResource("fileName", ofType: "html")
let html = try? String(contentsOfFile: htmlFile!, encoding: NSUTF8StringEncoding)
webView.loadHTMLString(html!, baseURL: nil)
Swift 3 tiene algunos cambios:
let htmlFile = Bundle.main.path(forResource: "intro", ofType: "html")
let html = try? String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8)
webView.loadHTMLString(html!, baseURL: nil)
¿Has probado?
También verifique que el recurso fue encontrado por pathForResource:ofType:inDirectory
call.
EDICIÓN 2016-05-27 - loadRequest
expone "una vulnerabilidad universal de secuencias de comandos entre sitios". Asegúrese de tener todos los activos que carga. Si carga un script incorrecto, puede cargar todo lo que quiera.
Si necesita enlaces relativos para trabajar localmente, use esto:
NSURL *url = [[NSBundle mainBundle] URLForResource:@"my" withExtension:@"html"];
[webView loadRequest:[NSURLRequest requestWithURL:url]];
El paquete buscará en todos los subdirectorios del proyecto para encontrar my.html
. (la estructura del directorio se aplana en el momento de la compilación)
Si my.html
tiene la etiqueta <img src="some.png">
, la vista web cargará some.png
de su proyecto.
Un fragmento de código simple de copiar y pegar:
-(void)LoadLocalHtmlFile:(NSString *)fileName onWebVu:(UIWebView*)webVu
{
[webVu loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:fileName ofType:@"html"]isDirectory:NO]]];
}
Nota:
Asegúrese de que la membresía de destino del archivo html esté marcada; de lo contrario, se lanzará una excepción: -
Aplicación de finalización debido a excepción no detectada
''NSInvalidArgumentException'', reason: ''*** -[NSURL initFileURLWithPath:isDirectory:]: nil string parameter''
Swift iOS:
// get server url from the plist directory
var htmlFile = NSBundle.mainBundle().pathForResource("animation_bg", ofType: "html")!
var htmlString = NSString(contentsOfFile: htmlFile, encoding: NSUTF8StringEncoding, error: nil)
self.webView.loadHTMLString(htmlString, baseURL: nil)
UIWebView *web=[[UIWebView alloc]initWithFrame:self.view.frame];
//[self.view addSubview:web];
NSString *filePath=[[NSBundle mainBundle]pathForResource:@"browser_demo" ofType:@"html" inDirectory:nil];
[web loadRequest:[NSURLRequest requestWhttp://.com/review/first-postsithURL:[NSURL fileURLWithPath:filePath]]];
if let htmlFile = NSBundle.mainBundle().pathForResource("aa", ofType: "html"){
do{
let htmlString = try NSString(contentsOfFile: htmlFile, encoding:NSUTF8StringEncoding )
webView.loadHTMLString(htmlString as String, baseURL: nil)
}
catch _ {
}
}