2016-10-20 6 views
0

リンクが下にあるウェブページを持つウェブビューがあります。私はそれらをクリックすることに対処する方法がありますが、それは新しいサファリブラウザにそれらを開きます。これは私が望むものではありません。ウェブビューの中にいて、簡単にそのようにナビゲートできるようにしたいと思います。これを行う方法はありますか?ウェブビュー内にあるURLリンクを読み込み、SWIFTのウェブビューに保持する方法

私は通常のウェブビューを使用してみましたが、下部のリンクは機能しません。ここで

は、私がこれまで持っているものです:あなたが同じのWebViewを使用して、新しいURLに移動したいしようとしているWebViewのデリゲートで

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で開いてリンクをしたくない場合は、なぜあなたはリンクを傍受し、それらを開くには、同じWebViewの内のリンクに移動はずサファリ? – rmaddy

答えて

2

。あなたのために

これはあなたのスイッチケースの内側にあなたがUIApplication.sharedApplication().openURL(request.URL!)

を使用して行を削除し、loadRequestへの呼び出しに置き換える必要があり、あなたの問題を解決するには loadRequest

loadRequest documentation

を使用しなければならないことを意味し

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 
    } 
} 

Hoこれは役に立ちます!良い一日を!

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

関連する問題