当我实现了在浏览器中完美运行的代码时,该浏览器在ios中打开了safari,并将myapp://放在地址栏上,它打开了我的应用程序,但是当我单击UIWebView内的链接时我想要

@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
    super.viewDidLoad()
    let setURL=URL(string:"https://myapp.com/")
    let setURLRequest=URLRequest(url:setURL!)
    webView.loadRequest(setURLRequest)

}


这是我将网站加载到webview并添加URL TYPE >item0->myapp的代码

item0->URL Scheme->myapp


当我添加到链接时,例如< a href="myapp://"></a>,它不会启动出现错误的另一个视图

代理

     public func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        if request.url?.scheme == "myapp" {
         // UIApplication.shared.open(request.url!, options: [:], //completionHandler: nil)
let myVC: MyAnotherController = MyAnotherController()
self.present(myVC, animated: true) { }
            return false
        }
    return true
}


收到此错误,类型为'AppDelegate'的值没有成员'present'

最佳答案

从if块内部,您需要返回false,它应该可以工作。
通过返回false,委托方法表明webView不应该开始加载url。

public func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {

if request.url?.scheme == "myapp" {
    // do your work here
    UIApplication.shared.open(request.url!, options: [:], completionHandler: nil)
    //Add the below line of code to the existing code
    return false
}
return true


}

关于ios - 如何在Swift 3中从UIWebview中的链接打开另一个View?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44215425/

10-14 23:37
查看更多