UIWebView delegate method shouldStartLoadWithRequest: equivalent in WKWebView? UIWebView delegate method shouldStartLoadWithRequest: equivalent in WKWebView? ios ios

UIWebView delegate method shouldStartLoadWithRequest: equivalent in WKWebView?


I've been looking for a good explanation myself, but haven't found one. I've used the following in my app and everything seems to work (Edit: updated based on ccoroom's comment):

UIWebViewDelegate     - webView:shouldStartLoadWithRequest:navigationType:WKNavigationDelegate  - webView:decidePolicyForNavigationAction:decisionHandler:

Here's the other UIWebViewDelegate methods:

UIWebViewDelegate     - webViewDidStartLoad:WKNavigationDelegate  - webView:didCommitNavigation:UIWebViewDelegate     - webViewDidFinishLoad:WKNavigationDelegate  - webView:didFinishNavigation:UIWebViewDelegate     - webView:didFailLoadWithError:WKNavigationDelegate  - webView:didFailNavigation:withError:                      - webView:didFailProvisionalNavigation:withError:

I'd love for someone to confirm this for me though.

Edit: Actually, I've answered the question you had in the title (although I'm no longer confident that webView:didCommitNavigation: is called at the exact same point in the lifecycle), but re-reading your description it looks like what you actually need to know about is how to reimplement a Javascript/Objective-C bridge using WKWebView. So have a look at my other answer.


To answer the original question, the equivalent of webView:shouldStartLoadWithRequest:navigationType: in UIWebView is webView:decidePolicyForNavigationAction:decisionHandler: in WKWebView. These methods are called before each request is made (including the initial request) and provide the ability to allow/disallow it.


Just use the following method , it's a part of WKNavigationDelegate

- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {    NSURLRequest *request = navigationAction.request;    NSString *url = [[request URL]absoluteString];    decisionHandler(WKNavigationActionPolicyAllow);}