步骤

  • 找到拦截的方法
    • 参数说明
    • 获取状态码,判断状态

先说明一下我的需求,这里是用wkwebview嵌套了一层h5的页面,在
h5页面做跳转时,会有可能地址加载404的情况,这个时候会显示白屏,然后我需要获取到加载页面结果的事件,取出状态码,如果是404的情况下给一个【点击刷新重试】的按钮。

找到拦截的方法

func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void)

参数说明

webView:当前控制器(Controller类)WkWebView实例对象
navigationResponse:webView发生重定向后获取网页地址的返回结果,可以从中获取状态码等信息
decisionHandler:没用过,暂时不知道

获取状态码,判断状态

let response:HTTPURLResponse = navigationResponse.response as! HTTPURLResponse
if(response.statusCode == 404) {self.view.addSubview(refreshLabel)//这里貌似设置顶层的View的为falserefreshLabel.translatesAutoresizingMaskIntoConstraints = falserefreshLabel.backgroundColor = UIColor.init(white: 0.5, alpha: 0.3)refreshLabel.layer.cornerRadius = 10refreshLabel.clipsToBounds = truerefreshLabel.text = "加载失败,请重试"refreshLabel.textAlignment = .centerrefreshLabel.isUserInteractionEnabled = true              refreshLabel.addGestureRecognizer(UITapGestureRecognizer.init(target: self, action: #selector(self.refreshCurrentUrl)))          let widthConstraint = NSLayoutConstraint(item: refreshLabel, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 150)//设置约束条件refreshLabel.addConstraint(widthConstraint)//为控件添加约束let heightConstraint = NSLayoutConstraint(item: refreshLabel, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 30)refreshLabel.addConstraint(heightConstraint)let centerYConstraint = NSLayoutConstraint(item: refreshLabel, attribute: .centerY, relatedBy: .equal, toItem: self.view, attribute: .centerY, multiplier: 1.0, constant: 0)refreshLabel.superview!.addConstraint(centerYConstraint)let centerXConstraint = NSLayoutConstraint(item: refreshLabel, attribute: .centerX, relatedBy: .equal, toItem: self.view, attribute: .centerX, multiplier: 1.0, constant: 0)refreshLabel.superview!.addConstraint(centerXConstraint)}decisionHandler(.allow)

这里获取了状态码,如果是404加入了【点击刷新重试】的Label,这里的代码是在网上找的,包括添加约束,设置背景等等。
refreshLabel.addGestureRecognizer这个方法还没测试,因为这个页面现在连加载都加载不出,直接进不去,我在外面通过导航失败的拦截方法直接拦截了。也正是因为现在测不了,我才有时间写这篇博客。

有问题可以评论区讨论哦~我是Java转ios半个月的小白,希望有大神指正我一些陋习和毛病!

IOS Swift5 WkWebView 跳转网页后 加载页面结果方法拦截(WKNavigationResponse)相关推荐

  1. vue网页预加载页面_页面预加载效果

    vue网页预加载页面 View demo 查看演示Download Source 下载源 Today we want to show you how to create a very simple p ...

  2. jsp网页无法加载css解决方法

    jsp网页无法加载css解决方法 自己做了一个项目,完了之后服务器自己写的,网页不会做就去网上淘了一个别人的纯网页代码.完了之后改了两天改出来了自己的模板,结果导入到myeclipse工作空间的时候- ...

  3. ajax右侧刷新加载jsp,jsp实现局部刷新页面、异步加载页面的方法

    jsp实现局部刷新页面.异步加载页面的方法 局部刷新页面.异步加载页面方案: 1.在jsp页面需要刷新的地方增加一个控件 2.新建一个jsp页面:aaa.jsp(用来放置需要刷新的内容) 3.将id为 ...

  4. 网页中加载flash的方法

    自06年4月IE升级之后,网页中的flash就需要先激活ActiveX控件才能使用.不爽.SWFObject是有效解决这个问题的js代码(原来叫 FlashObject),目前版本是1.4,完全开源的 ...

  5. 解决国内网页无法加载reCaptcha的方法

    科普: reCaptcha是Google公司的验证码服务,方便快捷,改变了传统验证码需要输入n位失真字符的特点.reCaptcha在使用的时候是这样的: 只需要点一下复选框,Google会收集一些鼠标 ...

  6. js重新加载页面的方法

    方法/步骤 1.window.location.reload(),刷新页面,不重复提交页面. 2.window.location.href=window.location.href,刷新页面,不重复提 ...

  7. css html制做王者荣耀网站,CSS3实现王者荣耀匹配人员加载页面的方法

    玩过王者的应该都熟悉,这个页面的效果.为什么要实现这个效果了? 第一:王者这么火,电竞这么火. 第二:主要还是来学习 css3 的线性.径向渐变.旋转.缩放以及动画. 图形解析 1.背景(径向渐变) ...

  8. 王者荣耀主页面html,CSS3实现王者荣耀匹配人员加载页面的方法

    玩过王者的应该都熟悉,这个页面的效果.为什么要实现这个效果了? 第一:王者这么火,电竞这么火. 第二:主要还是来学习 CSS3 的线性.径向渐变.旋转.缩放以及动画. 图形解析 1.背景(径向渐变) ...

  9. html 进入页面延迟加载数据,跳转至预加载的页面后数据显示延迟问题

    请问各位大神: 从A页面跳转到预加载好的B页面,B页面要用ajax从服务器中取出数据并显示,现在跳过去后会先显示页面,但是数据会延迟1秒左右才会显示.这该如何解决,或者有什么办法可以让B页面的数据完全 ...

最新文章

  1. 关于Python正则表达式的问题
  2. linux下top命令讲解
  3. Node响应中文时解决乱码问题
  4. CUDA内存类型memory
  5. 计算机通信技术用到的文献,计算机技术在通信中的应用与发展
  6. python装饰器解析_Python 装饰器解析
  7. 留言板php数据库_php实现留言板功能(连接数据库)的实例讲解
  8. 代码设置环境变量QProcess类
  9. APP推广工具(总结)
  10. java 修改request中的参数_springcloud 中 zuul 修改请求参数信息的方法
  11. JavaScript中canvas绘制太极图案
  12. c语言黑熊,BLACK BRUIN黑熊扭矩马达C5510000AA
  13. 安卓手机连接不上电脑解决方法总结
  14. KiCad 5.1.6 泪滴插件安装与使用
  15. 解决insmod error inserting 'hello ko' -1 Invalid module form
  16. Yandex企业邮箱注册
  17. ubuntu16.04 basler相机 图像采集卡设置
  18. [BZOJ2539][CTSC2000][KM]丘比特的烦恼
  19. C++ 字符串、string、char *、char[]、const char*的转换和区别
  20. 阿里云服务器学生机搭建及宝塔面板环境配置

热门文章

  1. DotNet Core程序部署(命令行)
  2. Android开发实战《手机安全卫士》——7.“高级工具”模块结尾 小火箭动画
  3. Python 爬虫的工具列表( 附Github代码下载链接)
  4. 使用C++模拟实现道具店购物功能
  5. JavaScript:使用Xpath定位网页元素(含Iframe定位)
  6. 《GOF设计模式》—命令(COMMAND)—Delphi源码示例:文档编辑
  7. 升职加薪轮不到我,原来因为.....
  8. 微信小程序自定义导航栏兼容适配所有机型
  9. 假艾斯机器人_奥特曼格斗进化3艾斯机器人玩法 艾斯机器人使用心得
  10. https协议--SSL加密流程