WKWebview:禁用互动并点击链接

时间:2017-04-12 10:26:09

标签: ios objective-c wkwebview

有没有办法在网页浏览中禁用互动? 那么用户不能再去加载的webview了吗?

编辑: 禁用UserInteractions不是解决方案,因为网站仍然必须可滚动。

4 个答案:

答案 0 :(得分:3)

实施WKNavigationDelegate协议:

@interface ViewController () <WKNavigationDelegate>

设置WKWebView的{​​{1}}媒体资源:

navigationDelegate

然后实施您要限制的URL的策略:

self.wkWebView.navigationDelegate = self;

答案 1 :(得分:1)

这些javascript行将通过覆盖HTML来禁用长按和链接触摸。基于框架的内容(如嵌入式YouTube视频)仍可正常使用。

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    webView.evaluateJavaScript("document.documentElement.style.webkitUserSelect='none'")
    webView.evaluateJavaScript("document.documentElement.style.webkitTouchCallout='none'")
    webView.evaluateJavaScript("var elems = document.getElementsByTagName('a'); for (var i = 0; i < elems.length; i++) { elems[i]['href'] = 'javascript:(void)'; }")
}

答案 2 :(得分:0)

您可以按照以下方式执行此操作。

//-----------------------------------------------------------------------

#pragma mark - UIWebView Methods

//-----------------------------------------------------------------------

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {



    return YES;
}

//----------------------------------------------------------------

- (void)webViewDidStartLoad:(UIWebView *)webView {
//disable user interaction 
}

//----------------------------------------------------------------

- (void)webViewDidFinishLoad:(UIWebView *)webView{
//enable user interaction
}

//----------------------------------------------------------------

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
    //enable user interaction
}

答案 3 :(得分:0)

WKNavigationDelegate解决方案仅阻止用户关注链接。我还具有一些要防止与之交互的表单控件,同时仍然允许滚动页面。最终我发现可以通过禁用Web视图的滚动视图的子视图来实现:

快速

self.webView.scrollView.subviews.forEach { $0.isUserInteractionEnabled = false }

Objective-C

for (UIView *subview in self.webView.scrollView.subviews)
{
    subview.userInteractionEnabled = NO;
}