Search code examples
iosobjective-cwkwebview

WKWebview: Disable interaction and clicks on links


Is there a way to disable interactions on a webview? So that the user can not go any further than the webview that is loaded?

EDIT: Disabling UserInteractions is not a solution because the website still has to be scrollable.


Solution

  • Implement the WKNavigationDelegate protocol:

    @interface ViewController () <WKNavigationDelegate>
    

    Set your WKWebView's navigationDelegate property:

    self.wkWebView.navigationDelegate = self;
    

    Then implement the policy for the URL(s) that you want to restrict:

    - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler {
    
        if ([navigationAction.request.URL.absoluteString containsString:@"somedomain.com/url/here"]) {
            decisionHandler(WKNavigationActionPolicyAllow);
        }
        else {
            decisionHandler(WKNavigationActionPolicyCancel);
        }
    }