internet2107
Goto Top

IOS - Xcode10 - Webview - Swift 4.3

Hallo.

In Xcode 10, Swift 4.3 ist nach der Erstellung einer neuen App und Import eines WebView alles möglich. Die Webseite wird im Webview sauber angezeigt, etc.

Nur das Offnen der Mail App, oder z.B. SMS App geht nicht mehr, sprich es werden E-Mail Adressen oder Telefonnummern nicht umgesetzt und die entsprechende App geöffnet.

Jemand eine Idee?

Content-ID: 395971

Url: https://administrator.de/contentid/395971

Ausgedruckt am: 25.11.2024 um 09:11 Uhr

137846
137846 18.12.2018 um 09:18:40 Uhr
Goto Top
internet2107
internet2107 19.12.2018 aktualisiert um 13:57:27 Uhr
Goto Top
Danke, jedoch ist das für Android und nicht für Apple Xcode.
Ich brauchte es für Swift.

Hier der Code für den WebView, so klappt es wieder mit allem.

import DropKit
import UIKit
import WebKit
import MessageUI

class WebviewerViewController: UIViewController, MFMailComposeViewControllerDelegate, WKUIDelegate {
   
    
    @IBOutlet var webView1: WKWebView!
    
    override var preferredStatusBarStyle: UIStatusBarStyle  {
        return .default
    }
    
    override var prefersStatusBarHidden: Bool  {
        return false
    }
    
    override func viewDidLoad() {
        super.viewDidLoad();
        
        self.webView1.uiDelegate = self;
        self.webView1.navigationDelegate = self;
        if let unwrappedWebView1 = URL(string: "http://www.meine_webseite.beispiel") {  
            self.webView1.load(URLRequest(url: unwrappedWebView1))
        }
        self.webView1.allowsBackForwardNavigationGestures = false
        self.webView1.allowsLinkPreview = false
        self.webView1.configuration.allowsAirPlayForMediaPlayback = false
        self.webView1.configuration.allowsInlineMediaPlayback = false
        self.webView1.configuration.suppressesIncrementalRendering = false
        webView1.scrollView.bounces = false;
        
       
    }
    
    
    
    override func viewDidAppear(_ animated: Bool) {
        
        if CheckInternet.Connection(){
            
            //Connected
            
        }else{
            
            self.Alert(Title: "DER Gehaltsrechner", Message: "Das Gerät ist nicht mit dem Internet verbunden.")  
            
        }
        
    }
    
    func Alert (Title: String, Message: String){
        
        let alert = UIAlertController(title: Title, message: Message, preferredStyle: UIAlertController.Style.alert)
        
        
        self.present(alert, animated: true, completion: nil)
        
    }
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.navigationController?.isNavigationBarHidden = true
        self.navigationItem.setHidesBackButton(true, animated: true)
        self.setNeedsStatusBarAppearanceUpdate()
    }
    

    func mailComposeController(_ controller: MFMailComposeViewController,
                               didFinishWith result: MFMailComposeResult,
                               error: Swift.Error?) {
        controller.dismiss(animated: true, completion: nil)
      
    }
    
    
}


extension WebviewerViewController: WKNavigationDelegate {
    
    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy)->Void) {
        if navigationAction.targetFrame == nil {
            
            webView.load(navigationAction.request)
            
        }
        
        if navigationAction.request.url?.scheme == "tel" {  
            
            UIApplication.shared.openURL(navigationAction.request.url!)
            
            decisionHandler(.cancel)
            
        }
        
        else if navigationAction.request.url?.scheme == "mailto" {  
            
            UIApplication.shared.openURL(navigationAction.request.url!)
            
            decisionHandler(.cancel)
            
        }
            
        else if navigationAction.request.url?.scheme == "SMS" {  
            
            UIApplication.shared.openURL(navigationAction.request.url!)
            
            decisionHandler(.cancel)
            
        }
        
        else {
            
            decisionHandler(.allow)
            
        }
        
    }
    
    @IBAction func backButton(_ sender: Any) {
        
        if(webView1.canGoBack) {
            
            webView1.goBack()
            
        }
        
        if !webView1.canGoBack {
            
            self.Alert(Title: "Notification", Message: "Can’t go back further")  
            
        }
        
    }
    }



extension URL {
    var email: String? {
        return scheme == "mailto" ? URLComponents(url: self, resolvingAgainstBaseURL: false)?.path : nil  
    }
}