UIWebView
IOS7 使用的是UIWebView 在代理方法中
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;
作用就是准备加载内容时调用的方法,通过返回值来进行是否加载的设置,
这里返回值是一个Bool类型。
如果为webView添加了delegate对象并实现该接口,那么在webView加载任何一个frame之前都会delegate对象的该方法,该方法的返回值用以控制是否允许加载目标链接页面的内容,返回YES将直接加载内容,NO则反之。并且UIWebViewNavigationType枚举,定义了页面中用户行为的分类,包括
- UIWebViewNavigationTypeLinkClicked,用户触击了一个链接。
- UIWebViewNavigationTypeFormSubmitted,用户提交了一个表单。
- UIWebViewNavigationTypeBackForward,用户触击前进或返回按钮。
- UIWebViewNavigationTypeReload,用户触击重新加载的按钮。
- UIWebViewNavigationTypeFormResubmitted,用户重复提交表单
- UIWebViewNavigationTypeOther,发生其它行为。
需求是点击拨号,不需要跳转,这里就要进行处理,返回NO(不直接加载内容)
UIWKWebView
ios以后使用此控件,在代理方法进行了区别。
代理方法类似shouldStartLoadWithRequest
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;
这里的
decisionHandler(WKNavigationActionPolicyAllow);
decisionHandler(WKNavigationActionPolicyCancel);
类似
shouldStartLoadWithRequest 的
return YES return NO
默认是需要decisionHandler(WKNavigationActionPolicyAllow);