TableView嵌套WKWebview出现的奇怪坑人bug

TableViewCell 中嵌入WKWebview 显示HTML字符串,TableView高度自适应 需求:每个tableviewcell 添加一个wkwebview 用于显示HTML 要求webview高度自适应,,每个cell高度自适应,,网上查的资料,,使用的通知来刷新tableview,,会使tableview刷新次数过多,,本文的方法tableview只刷新一次实现思路:cell中添加一个代理和一个index属性(cell协议方法中传入indexpath.row) 在webview加载完... 阅读详情
前要

我在使用UITableView嵌套WKWebView的行程那种网页带列表的新闻浏览的形式,我使用的就是UITaleView的tableHeaderView使用WKwebview来代替,本身WKwebview就是继承UIview,这个就涉及到计算WKwebView的内容的高度了,我起初在- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation这个方法中计算WKWebView的内容的高度(使用js与oc交互调用,不会自行百度),发现这里计算的高度根本不对,只能尝试延迟获取WKWebView的高度,但是发现延迟获取,wekView的高度太大话还是获取的不对,幸亏还有KVO这种东西,可以监听webView.scrollView的contentSize的变化,这样就可以很容易的获取高度,最后发现contentSize的的监听方法执行了多次,说明wkWebView的内容变化多次,但是在

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context;

这个方法中不管几次,最后执行刷新这个布局就可以了呀。


问题以及问题解决
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{

    if ([keyPath isEqualToString:@"contentSize"]) {

        CGSize new_size = [[change objectForKey:@"new"] CGSizeValue];
        _web_view.height = new_size.height;
        _tableviewHeadview.height = new_size.height;
        _detaiTableView.tableHeaderView.height = new_size.height;
        [_detaiTableView reloadData];

    }
}

这个方法可以监听WKWebView.ScrollView的变化,在iOS10以下会有问题,整个界面会被WKwebView覆盖,并且还不能滑动,但是在iOS10(包括iOS10)以上就可以这样,正常刷新整个TableView界面,这个问题还是我同事的iOS9.8的系统手机发现,目前解决的方法就是把这里的_detaiTableView.tableHeaderView.height = new_size.height;换成_detaiTableView.tableHeaderView = _tableviewHeadview重新赋值一下头部HeadView一次,不去改变高度,这个问题很坑爹,就是在此记录一下。

ios-TableView嵌套webView自适应高度.zip tableView嵌套多个webView自适应高度,高度获取较精准,速度快,有需要的童鞋可以借鉴 立即下载

相关推荐

51单片机也能玩转信号发生器?手把手教你用DAC0832和LM358输出四种标准波形

本文详细介绍了如何使用51单片机和DAC0832芯片搭配LM358运放,自制低成本信号发生器,实现正弦波、矩形波、三角波和锯齿波四种标准波形的输出。从硬件选型、电路设计到编程实现,手把手教你完成这一实用电子项目,总成本不到50元,适合电子爱好者和学生实践。

weixin_30530939的博客 551

09、WKWebView的用法

WKWebView的用法iOS如何调试Web代码2.1 iOS 模拟器调试web代码2.2 通过alert等相关方法2、获取WKWebView的准确高度2.1 通过注入JS代码2.2 通过KVO的方式3、WKWebView中Swift与JS交互3.1 基础知识3.1.1 WKScriptMessageHandler协议3.1.2 WKUserContentController3.1.3 WKScriptMessage3.2 JS调用Swift代码3.2 Swift调用JS iOS如何调试Web代码 2.1

重楼的博客 1384

【TestNG自动化测试框架详解】

TestNG是一款设计测试用例执行流程的测试框架。

weixin_43936332的博客 1538

WKWebVIew与UITableView嵌套页面解决方案

WKWebVIew与UITableView嵌套页面的手势冲突解决方案 问题描述:一个详情界面,上部分为WKWebView,下部分为UItableView,webview展示详情界面内容,tableVIew展示详情相关推荐列表! 实现要求:webView与tableView连贯且滑动时不能有卡顿或者出现手势冲突的问题! 首先大家会想到使用tableview,将webView放在cell或者TableHeaderView,这些都是可以的,但是唯一的难点就是怎么获取到webView的高度,让cell或者Tabl

smile_sunshine 1162

学Simulink--基于多能源系统协同与能源互联网的电网系统场景实例:风光氢储一体化系统的能量管理与调度仿真

在全球“双碳”目标驱动下,高比例可再生能源并网成为电网发展的核心方向。然而,风电与光伏具有强随机性与间歇性,给电网稳定运行带来巨大挑战。风光氢储一体化系统(Wind-Solar-Hydrogen-Storage Integrated System)通过将可再生能源发电电解水制氢氢气储存与燃料电池发电有机结合,构建了一个长时储能与能量形态转换的闭环系统,是实现能源互联网与零碳电力系统的关键路径。✅平抑波动:氢储能可实现跨天、跨周储能✅能量转化:电→氢→电/热/交通燃料,实现多能互补✅长时储能。

amy_mhd的博客 1069

【点云鸟瞰图BEV】点云鸟瞰图BEV原理与可视化

本节将介绍激光雷达等点云的鸟瞰图生成原理、代码及效果图。 1 BEV视图原理 点云BEV(Bird's Eye View)视图是指点云在垂直于高度方向的平面上的投影。通常,在获得bev视图前,会将空间分割成体素,利用体素对点云进行下采样,然后将每个体素作为一个点进行投影。体素是指将三维空间按照固定尺寸长方体进行划分时的长方体(Δl*Δw*Δh)。 体素投影时可以得到BEV视图的像素点坐标。每个像素点的特征取值则可以通过多种方式得到。 ...

叶子的博客 2万+

WKWebview的bug

背景 用webview打开一个h5,比如长按图片时弹出系统alertVC,平时没有发现什么问题,但如果此时你webview控制器是present呈现的话,会发现奇怪的bug。alertVC__dismiss__时,控制器也会奇怪的跟着dismiss。当时看到这个情况真的是震惊了,打断点会发现调用两次dismiss(网上查到的很多是多次,不知道是如何复现的),查看调用堆栈觉得是__WKActionS...

weixin_33881041的博客 293

运放比较电路分析以及应用

摘要:本文介绍了基于LM321运放的同相输入型单限电压比较器电路。该电路通过运放开环工作模式实现电平判断:当输入信号Vs+>0V时输出+15V高电平,Vs+<0V时输出≈0V低电平。典型应用包括直流电压过零检测、交流信号整形、电池欠压报警和数字信号噪声过滤。电路具有结构简单(仅需1个运放和1个电阻)、成本低的优势,适用于传感器信号处理、波形转换等场景。使用时需注意参考电平调整、输出电平匹配等问题,如需抗噪声可增加正反馈电阻构成施密特触发器。该电路是运放实现简单电平逻辑的经典方案。

qq_37999850的博客 394

UITableView嵌套WKWebView的那些坑

最近项目中遇到了一个需求,TableView中需要嵌套Web页面,我的解决办法是在系统的UITableViewCell中添加WKWebView。开发的过程中,遇到了些坑,写出来分享一下。1.首先说一下WKWebView的代理方法中,页面加载完成后会走的代理方法,与UIWebView的页面加载完成代理方法一样。- (void)webView:(WKWebView *)webView didFinis

MinggeQingchun的博客 2297

6、探索音乐结构中的统一性:贝多芬《英雄交响曲》第一乐章的深度剖析

本文深入剖析了贝多芬《英雄交响曲》第一乐章的音乐结构,探讨其统一性的来源及表现形式。通过主题与动机、和声与调性、旋律与节奏、织体与动态等多方面的分析,揭示了这部作品在技术层面和情感表达上的卓越成就。

b9c0d的博客 518

VMware ESXi 系统里创建虚拟机,虚拟磁盘日志损坏,如何或者把数据备份?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

**My Coding Family** 1636

WKWebView刷新机制小探

背景iOS的一个坑。在线上的版本中,iOS10系统中,app内使用WKWebView当作一个普通的子View来展示一个较长的Web内容组成一个hybrid页面时,会发生白屏的。经过原生端的开发的排除,确认是WKWebView的机制问题,并不是页面加载不完整或者是被劫持而导致的问题。为了更严谨的排出问题所在,我拉去了原声端的代码再次确认代码逻辑是否存在导致该问题所在的bug。因为该页面是一个自定义的...

逆钟夕的忘忧阁 2457

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

WKWebView遇到的坑

1、UIWebView 有属性 scalespageToFit,设置为YES,可以自动对页面进行缩放以适应屏幕,WKWebView怎么做可以实现自动缩放网页比例 ? 解决办法:使用scrollView的代理 //但如果这么写了的话, 需要在dealloc中把代理置nil: _wkWebView.scrollView.delegate = nil;否则会崩溃 _wkWebView.scrollView.delegate = self; 之前有引用到WKWebview,为使用方便将WKWebvi.

ios_xumin的专栏 2145

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WKWebView与H5交互坑

由于项目中使用的一直都是UIWebView遇到了性能问题,一遇到新闻详情页面内容超级多的时候就会加载慢,滑动卡顿的情况。无奈只能使用WKWebView。 需要使用到的是WKScriptMessageHandler: WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init]; [co...

evenstyle1的专栏 437

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ios图文详情加载html_iOS WKWebview 加载 html 遇到的一些问题总结

1. 加载方式WKWebview 有三种方式可以加载html, 而你需要哪种,取决于html的存在方式.1》如果html是通过服务器,以url的形式返回,则使用下面这种加载方式NSURLRequest*request=[NSURLRequestrequestWithURL:url];[self.webViewloadRequest:request];补充: 如果加载url出现1002问...

weixin_36198509的博客 1379

iOS WKWebView H5页面跳转支付宝崩溃问题

H5页面跳转支付宝崩溃,WKWebView,exception 'NSInternalInconsistencyException', reason: 'Completion handler passed to

wang6177的专栏 988

iOS WKWebView嵌入UITableViewCell

需求背景 产品需要展示html格式的富文本字符串,这个html是用户可编辑的,但不能有交互行为。从设计稿上看,这段富文本字符串需要展示在一个tableViewCell里,并且得让其自适应高度。 使用UILabel去实现需求 实际上,UILabel是支持attributeString的,而attributeString又可以通过html字符串生成,如下: NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc.

甜吖~的博客 1456

iOS cell嵌套webView,准确计算高度!

第一步:给webview添加kvo监听content size [self.webView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil]; 第二步:实现监听 #pragma mark - KVO - (

老衲有礼了的博客 2827

WKWebView 在 tableview 上的展示

创建 WKWebView _webView = [[WKWebView alloc]initWithFrame:self.view.bounds]; _webHeight = _webView.height; _webView.backgroundColor = [UIColor whiteColor]; _webView.UI...

yanyanforest的专栏 750

UItableview 中嵌套WebView

在tableview中嵌套web view,讲web view放在tableview的cell上面。@interface HomeViewController ()<UIWebViewDelegate> @property (nonatomic, strong) UIWebView *webView; @property (weak, nonatomic) IBOutlet UITableView

征战无悔人生 3648

iOS的UICollectionView调用reloadItemsAtIndexPaths出现的crash

前要 最近在弄那个使用UICollectionView的方法的刷新部分数据源的时候出现了crash, [_dateCollection reloadItemsAtIndexPaths:tempRefreshIndexPath]; 崩溃的信息是 attempt to delete item 72 from section 0 which only contains 0 items be...

ProgrammerWorking的博客 6398
上一篇: app支持自动屏幕旋转的时候,横屏时,启动app的时候界面横屏的bug解决
下一篇: iOS的小技巧总结
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值