objective-c - iOS 开发中 WKWebView 的使用问题拦截跳转
问题描述
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { 请问这里的 webView.URL 和 navigationAction.request.URL 有什么区别? }- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {请问这里的 webView.URL 和 navigationAction.request.URL 有什么区别?}
问题:1.上面代码块里面的问题 webView.URL 和 navigationAction.request.URL 有什么区别?2.当我第一次加载一个网页的时候,上面的代理方法为什么会被调用多次?3.如果我想拦截网页的跳转链接,希望通过 push 打开一个页面重新展示一个 webview,最好是在哪个代理方法里拦截? 遇到重定向问题怎么破?
问题解答
回答1:调多次 是不是因为url有重定向
回答2:你可以打印出来看看他们的值,看看跳转网页的时候是在哪里打印的。文档里有关于这两个代理的说明。
/*! @abstract Decides whether to allow or cancel a navigation. @param webView The web view invoking the delegate method. @param navigationAction Descriptive information about the action triggering the navigation request. @param decisionHandler The decision handler to call to allow or cancel the navigation. The argument is one of the constants of the enumerated type WKNavigationActionPolicy. @discussion If you do not implement this method, the web view will load the request or, if appropriate, forward it to another application. */- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;/*! @abstract Decides whether to allow or cancel a navigation after its response is known. @param webView The web view invoking the delegate method. @param navigationResponse Descriptive information about the navigation response. @param decisionHandler The decision handler to call to allow or cancel the navigation. The argument is one of the constants of the enumerated type WKNavigationResponsePolicy. @discussion If you do not implement this method, the web view will allow the response, if the web view can show it. */- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler;
相关文章:
1. 编辑成功不显示弹窗2. 哭辽 求大佬解答 控制器的join方法怎么转模型方法3. Navicat for mysql 中以json格式储存的数据存在大量反斜杠,如何去除?4. mysql - 数据库表中,两个表互为外键参考如何解决5. mysql储存json错误6. mysql - 怎么生成这个sql表?7. mysql - 表名称前缀到底有啥用?8. sql语句 - 如何在mysql中批量添加用户?9. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE语法实现存在即更新应该使用哪个标签?10. 怎么php怎么通过数组显示sql查询结果呢,查询结果有多条,如图。
