I want to load page in WKWebView, and then disable links in it. Most of the links are relative.
Tried with webView:decidePolicyForNavigationAction:decisionHandler:
but new page is loaded before it's called and relative links don't appear if i use navigationAction.request.URL
. Also tried with UIDelegate
, and that didn't load at all.
Any ideas? Obj C is prefferable, but Swift is also ok.
EDIT:
OK, I'll rephrase the question a bit.
When user presses link I want to stop WKWebView to open it, and instead save that link to array. Maybe open it manually with loadrequest if certain conditions are met.
Code is simple
- (void)viewDidLoad {
[super viewDidLoad];
NSString *sURL = @"https://www.mytestingwebsite.com";
NSURL *URL = [NSURL URLWithString:sURL];
WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init];
[self addUserScriptsToUserContentController:theConfiguration.userContentController];
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:theConfiguration];
webView.navigationDelegate = self;
webView.UIDelegate = self;
//webView.allowsLinkPreview = TRUE;
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:URL];
[webView loadRequest:nsrequest];
[self.view addSubview:webView];
}
They've used in WWDC 2014, video 206 NSURL *selectedURL = navigationAction.request.URL;
to detect and disable external links. But that obviously isn't working for me. I've just added NSLog and breakpoint to test it.