2016-04-12 120 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

那麼,在我的具體情況中,使用停止導航將請求重定向到系統瀏覽器。也許有更好的辦法,但這對我有效。 –