一、防止死循环问题

方法一:使用动画块  [self.myTableView beginUpdates];[self.myTableView endUpdates];
            在下面的代理方法获取内容的高度,然后刷新

-(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 beginUpdates];
              [self.myTableView endUpdates];

方法二:将webview创建为全局的,在数据请求之后再加载数据 : [_webView loadHTMLString:content baseURL:baseUrl];

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

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];
            }

二、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方法


三、html图片懒加载,适配webview的高度,参考:http://www.cnblogs.com/wangyingblock/articles/5718916.html

cell嵌套UIWebView遇到的几个问题的更多相关文章

  1. 创建一个Table View

    在本课程中,您将创建应用程序FoodTracker的主屏幕.您将创建第二个,表视图为主场景,列出了用户的菜谱.你会设计定制表格单元格显示每一个菜谱,它是这样的: 学习目标 在课程结束时,你将能够: 创 ...

  2. java生成pdf文件 --- Table

    Java利用itext实现导出PDF文件 所需要的jar包:com.lowagie.text_2.1.7.v201004222200.jar jar包下载地址:http://cn.jarfire.or ...

  3. springMVC生成pdf文件

    pom.xml文件配置=== <!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf --> <dependenc ...

  4. [iOS]UIScrollView嵌套UITableView,超出屏幕的cell点击不了问题

    最初我是用UIScrollView嵌套了一个UIView,然后UIView里面嵌套UITableView,这样cell 就会超出屏幕那一部分点击不了. 解决方法如下,UITableView拖出来,作为 ...

  5. [Swift通天遁地]二、表格表单-(3)在表格中嵌套另一个表格并使Cell的高度自适应

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  6. UIWebView如何获取内容高度

    iOS UIWebView如何获取到内容的高度呢?我们经常会遇到项目中需要使用UIWebView来加载H5页面,但是页面的高度并不确定,而我们前端需要根据内容的高度呈现出来,且不允许webview滚动 ...

  7. UIWebView 操作

    网络开发中,当公司已经使用 HTML5 技术实现同时适应 Android 和 iOS 等多个平台的网页时,这时往往需要我们 iOS 平台能够嵌入网页并进行各种交互,那我们应该怎么做来实现这种需求呢? ...

  8. iOS中获取cell中webview的内容尺寸

    最近项目中遇到在cell中获取webView的内容的尺寸的需求 实现的思路其实很简单 就是通过执行js 获取尺寸即可 为了后面用着方便我直接封装了一个HTML的cell 起名就叫 STHTMLBase ...

  9. python嵌套函数、闭包与decorator

    1 一段代码的执行结果不光取决与代码中的符号,更多地是取决于代码中符号的意义,而运行时的意义是由名字空间决定的.名字空间是在运行时由python虚拟机动态维护的,但是有时候我们希望能将名字空间静态化. ...

随机推荐

  1. ORA-12519, ORA-00020异常产生原因及解决方案

    近期在做项目的过程中,使用oracle时碰到了如下两个异常: ORA-12519, TNS:no appropriate service handler found: ORA-00020:maximu ...

  2. oracle修改字符集

    在linux下面安装了oracle 11G,由于安装的时候没有注意导致字符集问题,impdp导入操作后中文乱码. 1.用命令select userenv('language') from dual; ...

  3. Java应用程序访问网络资源--HttpClient

    HttpClient的最本质的功能是执行HTTP方法.一个HTTP方法的执行涉及到一个或几个HTTP请求/ HTTP响应的交流,通常由HttpClient的内部处理.用户预计将提供一个请求对象来执行和 ...

  4. Maven依赖版本冲突的分析及解决小结

    1:前言 做软件开发这几年遇到了许多的问题,也总结了一些问题的解决之道,之后慢慢的再遇到的都是一些重复性的问题了,当然,还有一些自己没有完全弄明白的问题.如果做的事情是重复的,遇到重复性问题的概率也就 ...

  5. 如何在IDEA上创建Spring MVC项目

    对于刚刚从eclipse.myeclipse转到IDEA工具,在搭建项目遇到了一些问题,所以让我来分享我的搭建过程. 建议大家准备java环境.IDEA工具.tomcat.maven了,还有我是win ...

  6. ViewState提交后丢失,竟然是OnInit搞的鬼

    提交后报错,断点看ViewStat值没有了.排查半天完全不知道怎么回事. 百度搜索了下ViewState提交丢失.然后CSDN一个帖子说的半拉子话提点了我. 然后想到我经常重写这些函数.以前怎么没遇到 ...

  7. C#图片上传服务器缩放存储功能

    项目需求上需要用户上传头像.本来是用第三方的插件的.但是很多都是收费的. 不过,我需要花这钱么?是不?所以网络上搜集了些资料.. 果然.这个世界 大神是很多很多的. 用了个免费插件. <scri ...

  8. ATL开发 ActiveX控件的 inf文件模板

    ATL开发 ActiveX控件的 inf文件模板    

  9. avalon2.2.3发布

    avalon2.2.3这次发布带许多好的东西 首先正式有了自己的LOGO 其次有了自己的QuickStart 样例工程, 这个工程整合了路由,表单,表格,切换卡等组件 https://github.c ...

  10. ipython的安装

    ipython:是python的一个交互式shell环境,可以安装到windows和linux上面.作用:用来执行python代码和调试用.windows上面安装:分为2.x版本和3.x版本,分为py ...