WKWebView常用delegate
#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相关推荐
- iOS tableview的常用delegate和dataSource执行顺序
在这次项目中遇到了一个特别奇葩的问题:表视图创建的cell在7以上的系统能正常运行显示,在模拟器上就不能正常实现......为解决这个问题,纠结了好久...... 对在7系统上不显示的猜测: 用mas ...
- iOS 获取 WKWebView 里面图片
背景:打开的文章H5能不能点击放大图片预览 并且保存啊? 首先我们需要获取到 用户点击的范围所在的 图片 那么我们可以做一个WKWebView 来专门处理这个事情. WKWebView (Images ...
- iOS9 WKWebView 释放时闪退
0.背景描述 项目里发现,在iOS9系统上打开网页后关闭时,应用会闪退,调试得到日志: 2019-12-18 18:25:37.931 xxx[18873:407888] *** -[XXWebVie ...
- iOS三维菜单、调试工具、封装通讯录、网络框架、多种控件和动画等源码
iOS精选源码 一个调用系统通讯录和获取通讯录所有联系人的封装 ios scrollview嵌套tableview同向滑动(初级.进阶), 支持OC / Swift WKWebView常用设置及进度条 ...
- iOS-WKWebView的使用
参考文章:http://www.cocoachina.com/ios/20180831/24753.html WK时苹果在iOS8.0之后推出的控件,相比于UIWebView: 内存消耗少: 解决了网 ...
- jsapi设计_Sketch插件如何架构
Sketch插件如何架构 Sketch插件跟我们平时用得比较多的Chrome插件类似,都是可以调用容器提供的API来实现各种个样的能力. Sketch的强大之处在于,它可以调用OSX系统级别的API. ...
- C#重要知识点在游戏开发中的应用
今天是大年初二,在此祝各位程序员朋友身体健康,猪年大吉.闲来无事,把在Unity开发中所使用的C#知识点总结了一下,因为自己在带团队新人的时候,好多知识点它们并不是很清楚,编写代码还是局限于" ...
- 学习Mac开发第三弹 通过WebView加载网页
学习Mac开发第三弹 通过WebView加载网页 添加WebKit.framework 关联Delegate 在新建工程的ViewController里拖放一个WebView,并用Autolayou ...
- 【chromium】常用设计模式:委托模式(Delegate Pattern)、观察者模式、 工厂模式。
文章目录 对象行为型模式 观察者模式(Observer Pattern) 类创建型模式 工厂模式(Factory Pattern) Delegate 和 client 委托模式(Delegate Pa ...
最新文章
- 面试京东Java架构师,竟然被问这些题,学到了!
- 《JavaScript机器人编程指南》——1.7 小结
- php实现视频转gif,在Linux上将视频转换成动态gif图片
- 第七十五期:网络 | 5G那些运营商不愿说的秘密
- C++ STL string的输出
- mysql 日期和时间类型
- AR的一些常见的操作
- 安装mysql 5.7.19 winx64解压缩版
- html5中加入视频格式,HTML5音视频格式video和audio
- 8.10 数据库安全性II Day28
- RHEL/Centos下VSFTPD服务器搭建
- 国内计算机期刊SCI收录
- HFSS - 双频微带天线设计与仿真
- 酒店预订微信小程序怎么开发?
- logback日志模板
- 在python如何调用三角函数_Python中计算三角函数之cos()方法的使用简介
- 用命令从FTP服务器下载文件
- html炫酷文本框,炫酷的input框实现
- 华为HG8204 光纤猫的路由设置
- php模板数组长度判断,Twig模板获取数组长度【原创】