【发布时间】:2016-08-27 13:43:29
【问题描述】:
我想在 WKWebView 中加载页面,然后禁用其中的链接。大多数链接都是相对的。
尝试使用 webView:decidePolicyForNavigationAction:decisionHandler: 但新页面在调用之前已加载,并且如果我使用 navigationAction.request.URL 则不会出现相关链接。还尝试了UIDelegate,但根本没有加载。
有任何想法吗? Obj C 是可取的,但 Swift 也可以。
编辑:
好的,我稍微改一下这个问题。
当用户按下链接时,我想停止 WKWebView 打开它,而是将该链接保存到数组中。如果满足某些条件,也许可以使用 loadrequest 手动打开它。
代码很简单
- (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];
}
他们在 WWDC 2014 中使用视频 206 NSURL *selectedURL = navigationAction.request.URL; 来检测和禁用外部链接。但这显然对我不起作用。我刚刚添加了 NSLog 和断点来测试它。
【问题讨论】:
-
你试过
webView.allowsLinkPreview = false吗? -
试过了。但默认值为假。如果是真的,按住可以工作,但我想完全禁用它并在满足某些条件时手动打开它。
-
显示您的识别码
-
恐怕你会误用
webView:decidePolicyForNavigationAction:decisionHandler:。请显示您尝试过的代码。
标签: ios objective-c swift wkwebview