2016-07-22 6 views
0

Ich versuche, Links von meinem lokalen HTML zu öffnen, aber ich weiß nicht, was in meinem Code falsch ist. Ich habe UIWebViewDelegate zur Klasse und den Delegaten zur View hinzugefügt.offene Links in Safari nicht uiwebview

class TableWebViewController: UIViewController, UIWebViewDelegate { 

@IBOutlet weak var infoWebView: UIWebView! 

var htmlName:String! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.infoWebView.delegate = self 
    self.loadHtmltoWebview(htmlName) 


    self.infoWebView.backgroundColor = UIColor.whiteColor() 
    self.infoWebView.opaque = false 

    // Do any additional setup after loading the view. 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

func loadHtmltoWebview(name: String) { 
    let htmlFile = NSBundle.mainBundle().pathForResource(name, ofType: "html") 
    let url = NSURL(string: htmlFile!) 
    let request = NSURLRequest(URL: url!) 

    infoWebView.loadRequest(request) 

} 

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


    if navigationType == UIWebViewNavigationType.LinkClicked { 
     //UIApplication.sharedApplication().openURL(request.URL!) 
     print(request.URL) 
     return false 
    } 
    return true 
} 

kann mir jemand helfen? Vielen Dank!

bearbeiten: print (request.URL) in der Ausgabe gezeigt, so springt er in die Funktion, sondern Safari nicht öffnen

+0

Ich habe Ihren Code in Xcode kopiert und eingefügt und es gibt kein Problem. Welches Problem haben Sie? Jede Nachricht im Protokoll? – chengsam

+0

'UIApplication.sharedApplication(). OpenURL (request.URL!)' Wird nicht ausgeführt, weil Sie einen Kommentar eingegeben haben. Oder ist das beabsichtigt? – FelixSFD

+0

Ich habe es aus Testgründen in einen Kommentar geschrieben. Nichts passiert, wenn man auf den Link klickt, damit openURL nicht ausgeführt wird – dtothepipo

Antwort

0

Stellen Sie sicher, dass UIWebViews Delegat Eigenschaft in IB zu Ihrem ViewController verbunden ist. Andernfalls wird die von Ihnen implementierte Methode niemals aufgerufen. Gehen Sie zum Anschlussbereich unter IB für die WebView und verbinden Sie den Delegiertenausgang mit Ihrem ViewController, der das UIWebViewDelegate Protokoll implementiert.