2016-10-20 33 views
0

我有一個網頁視圖,其網頁底部有鏈接。我有辦法處理他們被點擊,但它所做的只是將他們打開到一個新的Safari瀏覽器。這不是我想要的。我希望他們留在網絡視圖中,讓我像這樣輕鬆瀏覽它們。有沒有辦法做到這一點?如何加載位於Web視圖內部的url鏈接並將其保留在SWIFT中的Web視圖中

我試過只是使用普通的網絡視圖,但是底部的鏈接不起作用。

這是我到目前爲止有:

class ViewController: UIViewController, UIWebViewDelegate { 


@IBOutlet weak var myWebview: UIWebView! 
@IBOutlet weak var returnButton: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    prettyReturnButton(returnButton) 

    let url = NSURL(string: "mywebpage") 

    myWebview.delegate = self 

    print("Web page:" , url) 
    let requestObj = NSURLRequest(URL: url!); 
    myWebview.loadRequest(requestObj); 
    myWebview.keyboardDisplayRequiresUserAction = true 



} 

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 
    switch navigationType { 
    case .LinkClicked: 
     // Open links in Safari 
     //let newRequestObj = NSURLRequest(URL: request.URL!) 
     // webView.loadRequest(newRequestObj) 
     UIApplication.sharedApplication().openURL(request.URL!) 
     return false 
    default: 
     // Handle other navigation types... 
     return true 
    } 
} 
+1

它應該,如果你不使用代理 – xmhafiz

+0

如果你不想在Safari中打開的鏈接,那麼你爲什麼要攔截的鏈接,打開它們相同的網頁視圖中導航到鏈接蘋果瀏覽器? – rmaddy

回答

2

在網頁視圖的委託,你會想導航到使用相同的WebView新的URL。

對於您,這意味着你的交換機機箱內,你應該使用 loadRequest

loadRequest documentation

要解決你的問題,你應該使用UIApplication.sharedApplication().openURL(request.URL!)

刪除線,並以loadRequest調用替換

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { 
    switch navigationType { 

    case .LinkClicked: 
     // Open links in Safari 

     guard let newRequest = request as? URLRequest else { return false } 

     webView.loadRequest(newRequest) 
     return false 
    default: 
     // Handle other navigation types... 
     return true 
    } 
} 

何這有助於!祝你今天愉快!

3

給委託給你的UIViewController:UIWebViewDelegate

let url = NSURL(string: "http://www.djmazacool.com") 
let req = NSURLRequest(URL: url!) 
YOURWEBVIEW.delegate = self 
YOURWEBVIEW.loadRequest(req) 



func webViewDidStartLoad(webView: UIWebView) 
{ 
     // start animation 
     print("start loaded call") 
} 
func webViewDidFinishLoad(webView: UIWebView) 
{ 
     // load url complete 
     print("loading done call") 
} 

輸出:

Its my webView Output load url

不要忘了在的.plist文件中添加此屬性。

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSAllowsArbitraryLoads</key> 
    <true/> 
</dict> 

.plist file code

相關問題