Uiwebview 的JS 交互 以及 点击事件

提到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);//如果网页请求错误,会返回相应的404403200等的错误 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

UIWebView中视频的长度与播放进度等信息

http://blog.csdn.net/zengconggen/article/details/8073154

UIWebView中js交互或的摄像头,相册等的范例

http://blog.csdn.net/zrhloveswallow/article/details/25195461


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值