提到UIWebview,不得不提到OC和JS的交互.
UIWebview的UIWebViewDelegate有四个代理方法,分别是:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;(每一次刷新webview都会调用)
- (void)webViewDidStartLoad:(UIWebView *)webView;(webview开始加载时调用)
- (void)webViewDidFinishLoad:(UIWebView *)webView;(webview加载结束时开始调用)
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;(webview错误时调用,但是并不能判断404/403等一些错误)
//其中大多数的交互都是在shouldStartLoadWithRequest 实现的(很多时候要提前和web端约定好规则)
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
NSLog(@"request : %@",request);
static BOOL isRequestWeb = YES;
if (isRequestWeb)
{
NSHTTPURLResponse *response = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
// NSLog(@"suggestedFilename---%@",response.suggestedFilename);
// NSLog(@"URL---%@",response.URL);
// NSLog(@"allHeaderFields---%@",response.allHeaderFields);
// NSLog(@"statusCode---%d",response.statusCode);
// NSLog(@"retainCount---%d",response.retainCount);
// NSLog(@"MIMEType---%@",response.MIMEType);
// NSLog(@"accessibilityElementCount---%d",response.accessibilityElementCount);
NSLog(@"statusCode---%d",response.statusCode);//如果网页请求错误,会返回相应的404,403,200等的错误 200(成功)服务器已成功处理了请求。
if (response.statusCode == 404)
{
// code for 404
NSLog(@"网页404错误");
return NO;
}
else if (response.statusCode == 403)
{
// code for 403
NSLog(@"网页403错误");
return NO;
}
[webView loadData:data MIMEType:@"text/html" textEncodingName:nil baseURL:[request URL]];
isRequestWeb = NO;
return NO;
}
return YES;
}
- (void)webViewDidStartLoad:(UIWebView *)webView
{
NSLog(@"加载开始了");
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
NSLog(@"加载结束了");
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
NSLog(@"加载错误了");
}
--UIWebView是内置浏览器控件,能够加载html、pdf、txt等多种格式文件
--常用加载方法:
loadRequest:
loadHTMLString:baseURL:
loadData:MIMEType:textEncodingName:baseURL:
--常用导航方法:
goBack – 回退
goForward – 前进
reload - 重载
stopLoading - 取消载入内容
--常用属性:
scalespageToFit – 自动对页面进行缩放以适应屏幕
dataDetectorTypes - 设定电话号码、网址、电子邮件和日期等文字变为链接文字
浏览器通过MIME标志符可以知道使用哪种插件读取相关文件
UIWebview长按菜单
http://blog.csdn.net/bianruifeng/article/details/10449771
http://blog.csdn.net/zengconggen/article/details/8073154
UIWebView中js交互或的摄像头,相册等的范例
http://blog.csdn.net/zrhloveswallow/article/details/25195461