年年有"余"

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2336|回复: 3

iOS WebView的用法

[复制链接]
  • TA的每日心情
    奋斗
    2022-12-13 21:26
  • 签到天数: 371 天

    [LV.9]以坛为家II

    发表于 2014-9-2 15:46:06 | 显示全部楼层 |阅读模式
    一、UIWebView 可以加载和显示某个URL的网页,也可以显示基于HTML的本地网页或部分网页:
    a. 加载 URL
    WebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, 320, 400)];   
    NSString *path = @"http://www.baidu.com";   
    NSURL *url = [NSURL URLWithString:path];   
    [WebView loadRequest:[NSURLRequest requestWithURL:url]];   
    b. 加载 HTML
    NSBundle *bundle = [NSBundle mainBundle];
    NSString *resPath = [bundle resourcePath];
    NSString *filePath = [resPath stringByAppendingPathComponent:@"Home.html"];
    [webView loadHTMLString:[NSString stringWithContentsOfFile:filePath]
      baseURL:[NSURL fileURLWithPath:[bundle bundlePath]]];
    二、使用网页加载指示,加载完成后再显示网页出来
        首先要指定委托方法:
           webView.delegate =self;
        UIWebView主要有下面几个委托方法:
          1、- (void)webViewDidStartLoad:(UIWebView *)webView;开始加载的时候执行该方法。
          2、- (void)webViewDidFinishLoad:(UIWebView *)webView;加载完成的时候执行该方法。
          3、- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;加载出错的时候执行该方法。
         这样,可以利用 webViewDidStartLoad 和 webViewDidFinishLoad 方法实现本功能:        
    - (void) webViewDidStartLoad:(UIWebView *)webView  
    {  
        //创建UIActivityIndicatorView背底半透明View        
        UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];   
        [view setTag:108];   
        [view setBackgroundColor:[UIColor blackColor]];   
        [view setAlpha:0.5];   
        [self.view addSubview:view];   
          
        activityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];   
        [activityIndicator setCenter:view.center];   
        [activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleWhite];   
        [view addSubview:activityIndicator];   
      
        [activityIndicator startAnimating];
    }
    - (void) webViewDidFinishLoad:(UIWebView *)webView  
    {  
        [activityIndicator stopAnimating];  
        UIView *view = (UIView*)[self.view viewWithTag:108];  
        [view removeFromSuperview];  
        NSLog(@"webViewDidFinishLoad");  
    }  
    三、UIWebView还可以通过 stringByEvaluatingJavaScriptFromString 函数来执行 javascript代码,从而可以更加灵活地处理网页文件
      1. 获得UIWebView的标题
    NSString *theTitle=[webView stringByEvaluatingJavaScriptFromString:@"document.title"];
      2. 获取页面的URL
    NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
      3. 修改页面元素的值
    NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByName('q')[0].value='朱祁林';"];
      4. 表单提交
    NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.forms[0].submit(); "]

    四、综合运用以上方法,还可以实现部分网页的显示,基本思路如下:
        1. 用 loadRequest 先获取网页,但先设置 UIWebView.hidden = YES;
        2. 在 webViewDidFinishLoad 中,用
    NSString *js_result2 = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementByIdx_xx_x_x('xxxx').innerHTML; "] 获取指定标签元素的HTML代码
        3. 再使用 loadHTMLString 加载该HTML代码,即可
  • TA的每日心情
    奋斗
    2022-12-13 21:26
  • 签到天数: 371 天

    [LV.9]以坛为家II

     楼主| 发表于 2014-9-2 22:43:23 来自手机 | 显示全部楼层
    补充说明
    回复

    使用道具 举报

    该用户从未签到

    发表于 2014-9-3 12:12:04 | 显示全部楼层
    多谢指教, 我还正打算做一个要用到这个东西的app来着
  • TA的每日心情
    奋斗
    2022-12-13 21:26
  • 签到天数: 371 天

    [LV.9]以坛为家II

     楼主| 发表于 2014-9-4 07:03:11 来自手机 | 显示全部楼层
    strlen 发表于 2014-9-3 12:12
    多谢指教, 我还正打算做一个要用到这个东西的app来着

    相互学习
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    手机版|小黑屋|Archiver|iOS开发笔记 ( 湘ICP备14010846号 )

    GMT+8, 2024-4-29 05:45 , Processed in 0.044827 second(s), 18 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表