从Safari中的本地HTML UIWebVIew打开HTML链接

时间:2018-02-09 12:18:10

标签: javascript html ios uiwebview

我有一个由本地HTML文件组成的应用程序。

所有tel:links和mailto:工作正常,并在iOS上打开电话和邮件,但当我使用简单的HTML链接到网站时,没有任何反应,

这是我的代码,任何输入都将不胜感激。

此致

萨姆

/v1/auth/login

这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。这是请求的HTML代码。

my-backend-service-project.appspot.com/v1/

2 个答案:

答案 0 :(得分:0)

实施UIWebViewDelegate并将代理人分配给webview webview.delegate = self,以识别点击后的链接 试试这个

class ViewController: UIViewController,UIWebViewDelegate {

    @IBOutlet weak var webView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        webview.delegate = self
        loadHtmlFile()
    }

    func loadHtmlFile() {
        let url = Bundle.main.url(forResource: "index", withExtension:"html")
        let request = NSURLRequest(url: url!)
        webView.loadRequest(request as URLRequest)

        webView.scrollView.bounces = false;
        webView.isOpaque = false;

    }

    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        if navigationType == .linkClicked {
            if let url = request.url {
                UIApplication.shared.openURL(url)
                return false
            }
        }
        return true
    }

}

答案 1 :(得分:0)

@Sam Manser尝试使用WKWebView而不是UIWebView。因为UIWebView是从iOS 11中删除的。当你点击你的链接时,它正在导航到safari浏览器完美。

Swift 4

     import UIKit
     import WebKit

     class ViewController: UIViewController , WKUIDelegate , WKNavigationDelegate {

        @IBOutlet weak var indeWebView: WKWebView!

        override func viewDidLoad() {
            super.viewDidLoad()
            // Do any additional setup after loading the view, typically from a nib.
            loadButtonHTMLFile()
        }


        func loadButtonHTMLFile() {
            let url = Bundle.main.url(forResource: "index", withExtension:"html")
            indeWebView.uiDelegate = self
            indeWebView.navigationDelegate = self
            indeWebView.scrollView.bounces = false
            indeWebView.load(URLRequest(url: url!))
        }

        //Open Tapped Link in Safari
        func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Swift.Void) {

            if navigationAction.navigationType == WKNavigationType.linkActivated {
                if let url = navigationAction.request.url {
                    UIApplication.shared.open(url, options: [:], completionHandler: nil)
                }
            }
            // Call this completion handler compulsary
            decisionHandler(WKNavigationActionPolicy.allow)
        }
     }