2016-04-12 95 views
1

我想阻止用户在WebKit Web视图中单击链接(或带有链接的按钮),实际上阻止导航。看起来,这是可能的与UIWebView。我怎样才能用WKView来完成这个任务?防止与WebKit导航

谢谢。

回答

1

防止这种类型的行为可以通过多种方式完成,并且很大程度上取决于您希望如何防止这种行为。

绝对简单的将是告诉WKWebView停止在所有情况下加载,但初始加载

var isInitialLoad = true 

func webView(webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { 

    if self.isInitialLoad { 
     self.isInitialLoad = false 
    } else { 
     webView.stopLoading() 
    } 
} 

注意以这种方式做会导致你火 web视图(web视图:WKWebView,didFailProvisionalNavigation导航:WKNavigation!,withError错误:NSError) error.code = -999

您可以使用evaluateJavascript()来查找页面上的所有锚定标记/按钮,并通过javascript禁用/处理它们。

无论哪种方式,你可以直接做一个网页视图可以在这里找到:

https://developer.apple.com/library/ios/documentation/WebKit/Reference/WKWebView_Ref/index.html#//apple_ref/occ/cl/WKWebView

+0

我来到这里,看到一个downvote。我不明白,这绝对是答案。 –

+0

谢谢阿图罗,也许这是我的例子有一个错误(现在修复)。或者也许有人不喜欢这个问题本身。 我有点好奇,是什么导致原始海报需要在所有情况下禁用所有导航,可能有更好的解决方案,但没有问题的上下文,它很难给出更好的答案。 在我看来,除非绝对必要,否则不应使用.stopLoading()。即。客户端应用程序代码标识服务器不是或不知道的故障条件。理想情况下停止所有导航是一个服务器端问题。 – Glorifundel

+0

那么,在我的具体情况中,使用停止导航将请求重定向到系统浏览器。也许有更好的办法,但这对我有效。 –