当我实现了在浏览器中完美运行的代码时,该浏览器在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/