cell嵌套UIWebView遇到的幾個問題

1、防止死循環問題html

方法一:使用動畫塊  [self.myTableView beginUpdates];[self.myTableView endUpdates];
            在下面的代理方法獲取內容的高度,而後刷新web

          -(void)webViewDidFinishLoad:(UIWebView *)webView動畫

          {lua

              webHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] floatValue];//次高度就是cell的高度
              CGSize actualSize = [webView sizeThatFits:CGSizeZero];
              CGRect newFrame = webView.frame;
              newFrame.size.height = actualSize.height;
               webView.frame = newFrame;url

              [self.myTableView beginUpdates];
              [self.myTableView endUpdates];代理

            }htm

方法二:將webview建立爲全局的,在數據請求以後再加載數據 : [_webView loadHTMLString:content baseURL:baseUrl];blog

            tableview代理方法中:-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath圖片

                                       {ip

                                             NSString *cellIdentifier = @"webCell";
                                          UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
                                            if (!cell) {
                                             cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
                    
                                               if (!_webView){
                                                 _webView = [[UIWebView alloc]initWithFrame:CGRectMake(10, 10.0, MainScreen_width-20.0, 1)];
                                                  _webView.delegate = self;
                                                   _webView.scrollView.scrollEnabled = NO;
                                              [_webView sizeToFit];
                                             [cell addSubview:_webView];
                                              }
                                          }
                
                                       cell.backgroundColor = [UIColor clearColor];
                                       cell.selectionStyle = UITableViewCellSelectionStyleNone;
                                       return cell;
                                         }

       在webview的代理方法中能夠直接使用tableview的reloadData方法
     -(void)webViewDidFinishLoad:(UIWebView *)webView

          {

              webHeight = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] floatValue];//次高度就是cell的高度
              CGSize actualSize = [webView sizeThatFits:CGSizeZero];
              CGRect newFrame = webView.frame;
              newFrame.size.height = actualSize.height;
               webView.frame = newFrame;

                 [self.myTableView reloadData];
            }

2、js交互問題

向h5頁面注入js的方法:    [webView stringByEvaluatingJavaScriptFromString:jsstr];//注入js方法 能夠經過次方法向h5頁面注入js方法,來操做h5頁面
例如:-(void)webViewDidFinishLoad:(UIWebView *)webView

     {

        //這裏是js,主要目的實現對url的獲取
         static  NSString *const jsGetImages =
        @"function getImages(){\ var objs = document.getElementsByTagName(\"img\");\
        var imgScr = '';\
       for(var i=0;i<objs.length;i++){\
       var _src = '';\
      _src = objs[i].getAttribute('data-echo');\
       if( _src == null)\
      _src = objs[i].src;\
      if(i != (objs.length-1))\
      imgScr = imgScr + _src + '+';\
      };\
      return imgScr;\
     };";
     [webView stringByEvaluatingJavaScriptFromString:jsGetImages];//注入js方法
    
     NSString *urlResurlt = [webView stringByEvaluatingJavaScriptFromString:@"getImages()"];//調用js方法

       }3、html圖片懶加載,適配webview的高度,參考:http://www.cnblogs.com/wangyingblock/articles/5718916.html             

相關文章
相關標籤/搜索