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-Key: 395971

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

Printed on: April 26, 2024 at 19:04 o'clock

Mitglied: 137846
137846 Dec 18, 2018 at 08:18:40 (UTC)
Goto Top
Member: internet2107
internet2107 Dec 19, 2018 updated at 12:57:27 (UTC)
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  
    }
}