#pragma mark - WKNavigationDelegate
// 页面开始加载时调用 2
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(WKNavigation *)navigation {}
// 当内容开始返回时调用 3
- (void)webView:(WKWebView *)webView didCommitNavigation:(WKNavigation *)navigation {}
// 页面加载完成之后调用 4
- (void)webView:(WKWebView *)webView didFinishNavigation:(WKNavigation *)navigation {}
// 页面加载失败时调用
- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(WKNavigation *)navigation {}
// 接收到服务器跳转请求之后调用
- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(WKNavigation *)navigation {}
// 在收到响应后,决定是否跳转
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {NSLog(@"%@",navigationResponse.response.URL.absoluteString);//允许跳转decisionHandler(WKNavigationResponsePolicyAllow);//不允许跳转//decisionHandler(WKNavigationResponsePolicyCancel);
}
// 在发送请求之前,决定是否跳转 1
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {NSString *url = navigationAction.request.URL.absoluteString;NSLog(@"url: %@",url);if([_interceptor isPluginUrl:url webView:webView]){[_interceptor filter:url webView:webView webViewController:self];decisionHandler(WKNavigationActionPolicyCancel);return;}//允许跳转decisionHandler(WKNavigationActionPolicyAllow);//不允许跳转//decisionHandler(WKNavigationActionPolicyCancel);
}#pragma mark - WKUIDelegate
// 创建一个新的WebView
- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures {return [[WKWebView alloc]init];
}
// 输入框
- (void)webView:(WKWebView *)webView runJavaScriptTextInputPanelWithPrompt:(NSString *)prompt defaultText:(nullable NSString *)defaultText initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(NSString * __nullable result))completionHandler {NSLog(@"prompt = %@",prompt);completionHandler(@"http");
}
// 确认框
- (void)webView:(WKWebView *)webView runJavaScriptConfirmPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(BOOL result))completionHandler {NSLog(@"message = %@",message);completionHandler(YES);
}
// 警告框
- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler {NSLog(@"message = %@",message);UIAlertController *alertController = [UIAlertController alertControllerWithTitle:messagemessage:nilpreferredStyle:UIAlertControllerStyleAlert];[alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {completionHandler();}]];[self presentViewController:alertController animated:YES completion:nil];
}

WKWebView常用delegate相关推荐

  1. iOS tableview的常用delegate和dataSource执行顺序

    在这次项目中遇到了一个特别奇葩的问题:表视图创建的cell在7以上的系统能正常运行显示,在模拟器上就不能正常实现......为解决这个问题,纠结了好久...... 对在7系统上不显示的猜测: 用mas ...

  2. iOS 获取 WKWebView 里面图片

    背景:打开的文章H5能不能点击放大图片预览 并且保存啊? 首先我们需要获取到 用户点击的范围所在的 图片 那么我们可以做一个WKWebView 来专门处理这个事情. WKWebView (Images ...

  3. iOS9 WKWebView 释放时闪退

    0.背景描述 项目里发现,在iOS9系统上打开网页后关闭时,应用会闪退,调试得到日志: 2019-12-18 18:25:37.931 xxx[18873:407888] *** -[XXWebVie ...

  4. iOS三维菜单、调试工具、封装通讯录、网络框架、多种控件和动画等源码

    iOS精选源码 一个调用系统通讯录和获取通讯录所有联系人的封装 ios scrollview嵌套tableview同向滑动(初级.进阶), 支持OC / Swift WKWebView常用设置及进度条 ...

  5. iOS-WKWebView的使用

    参考文章:http://www.cocoachina.com/ios/20180831/24753.html WK时苹果在iOS8.0之后推出的控件,相比于UIWebView: 内存消耗少: 解决了网 ...

  6. jsapi设计_Sketch插件如何架构

    Sketch插件如何架构 Sketch插件跟我们平时用得比较多的Chrome插件类似,都是可以调用容器提供的API来实现各种个样的能力. Sketch的强大之处在于,它可以调用OSX系统级别的API. ...

  7. C#重要知识点在游戏开发中的应用

    今天是大年初二,在此祝各位程序员朋友身体健康,猪年大吉.闲来无事,把在Unity开发中所使用的C#知识点总结了一下,因为自己在带团队新人的时候,好多知识点它们并不是很清楚,编写代码还是局限于" ...

  8. 学习Mac开发第三弹 通过WebView加载网页

    学习Mac开发第三弹 通过WebView加载网页 添加WebKit.framework  关联Delegate 在新建工程的ViewController里拖放一个WebView,并用Autolayou ...

  9. 【chromium】常用设计模式:委托模式(Delegate Pattern)、观察者模式、 工厂模式。

    文章目录 对象行为型模式 观察者模式(Observer Pattern) 类创建型模式 工厂模式(Factory Pattern) Delegate 和 client 委托模式(Delegate Pa ...

最新文章

  1. 面试京东Java架构师,竟然被问这些题,学到了!
  2. 《JavaScript机器人编程指南》——1.7 小结
  3. php实现视频转gif,在Linux上将视频转换成动态gif图片
  4. 第七十五期:网络 | 5G那些运营商不愿说的秘密
  5. C++ STL string的输出
  6. mysql 日期和时间类型
  7. AR的一些常见的操作
  8. 安装mysql 5.7.19 winx64解压缩版
  9. html5中加入视频格式,HTML5音视频格式video和audio
  10. 8.10 数据库安全性II Day28
  11. RHEL/Centos下VSFTPD服务器搭建
  12. 国内计算机期刊SCI收录
  13. HFSS - 双频微带天线设计与仿真
  14. 酒店预订微信小程序怎么开发?
  15. logback日志模板
  16. 在python如何调用三角函数_Python中计算三角函数之cos()方法的使用简介
  17. 用命令从FTP服务器下载文件
  18. html炫酷文本框,炫酷的input框实现
  19. 华为HG8204 光纤猫的路由设置
  20. php模板数组长度判断,Twig模板获取数组长度【原创】

热门文章

  1. python空格符用什么表示_如何用空格填写Python字符串?
  2. 【翁恺】35-流的概念
  3. python-(5-3)内置函数-zip locals globals sorted filter map
  4. 家庭影院投影仪比较,投影仪怎么选好坏?
  5. 运动装备哪个牌子好?运动装备清单推荐
  6. 软件测试的缺陷等级划分
  7. 电源电压监测(SVD)
  8. 【React工作记录九十一】Viewer.js实现图片预览效果
  9. 面试字节跳动,被面试官的源码问题问到怀疑人生
  10. 要想孩子写作文没烦恼?建议家长这样做