UIWebView的KVO监听方法没有执行原因

当UIWebView高度设为0时,通过KVO监听其scrollView.contentSize的方法不会执行。原因是内容区域高度为0导致监听未触发。解决方案是将webview高度设置为大于0的任意值,如1,以确保能正确监听内容大小变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

我们都用过UIwebView或者WKWebView来显示html的文本,但是通常我们一般都会计算的内容的实际高度,而计算内容的高度
有很多种
1、加载完成的webview的回调,中利用js获取内容的高度,具体js自行百度

- (void)webViewDidFinishLoad:(UIWebView *)webView

2.利用KVO监听webview中scrollview的contentSize的变化

//添加监听
[webview.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];
//contentSIze变化执行的方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{
    
    if ([keyPath isEqualToString:@"contentSize"]) {
        
        CGSize size = _webview.scrollView.contentSize;
        
        _cellWebhight = size.height;
        
        [self reloadRow:0 inSection:0 withRowAnimation:UITableViewRowAnimationNone];
    }
    
}

我们今天遇到的是我设置了webview的高度是0.并且采用了第二种方法KVO来监听,问题出现了,我的这个observeValueForKeyPath方法一直没有回调

原因

原因太简单了 我设置了webview的高度为0了,contentsize监听方法不回调了,但是不知道什么原因,期待哪位老铁解释

解决方案

设置webview的高度为1就行但是不嗯呢该小于等于0的任意数字

以上仅供参考,欢迎其他建议
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值