如何加载 Web 视图中的 url link 并将其保存在 SWIFT 中的该 Web 视图中
How to load a url link that is inside a web view and keep it in that web view in SWIFT
我有一个 Web 视图,该视图的网页底部有链接。我有办法处理它们被点击的情况,但它所做的只是将它们打开到一个新的 safari 浏览器中。这不是我 want.I 希望他们留在 web 视图中并让我像那样轻松导航它们的结果。有办法吗?
我试过只使用常规网络视图,但底部的链接不起作用。
这是我目前的情况:
class ViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var myWebview: UIWebView!
@IBOutlet weak var returnButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
prettyReturnButton(returnButton)
let url = NSURL(string: "mywebpage")
myWebview.delegate = self
print("Web page:" , url)
let requestObj = NSURLRequest(URL: url!);
myWebview.loadRequest(requestObj);
myWebview.keyboardDisplayRequiresUserAction = true
}
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
switch navigationType {
case .LinkClicked:
// Open links in Safari
//let newRequestObj = NSURLRequest(URL: request.URL!)
// webView.loadRequest(newRequestObj)
UIApplication.sharedApplication().openURL(request.URL!)
return false
default:
// Handle other navigation types...
return true
}
}
在 webview 委托中,您将要使用相同的 webview 导航到新的 url。
对你来说,这意味着你应该在你的 switch case 中使用
loadRequest
要解决您的问题,您应该使用 UIApplication.sharedApplication().openURL(request.URL!)
删除该行
并将其替换为对 loadRequest
的调用
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
switch navigationType {
case .LinkClicked:
// Open links in Safari
guard let newRequest = request as? URLRequest else { return false }
webView.loadRequest(newRequest)
return false
default:
// Handle other navigation types...
return true
}
}
希望对您有所帮助!祝你有美好的一天!
给你的 UIViewcontroller 委托:UIWebViewDelegate
let url = NSURL(string: "http://www.djmazacool.com")
let req = NSURLRequest(URL: url!)
YOURWEBVIEW.delegate = self
YOURWEBVIEW.loadRequest(req)
func webViewDidStartLoad(webView: UIWebView)
{
// start animation
print("start loaded call")
}
func webViewDidFinishLoad(webView: UIWebView)
{
// load url complete
print("loading done call")
}
输出:
不要忘记在 .plist 文件中添加此属性。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
我有一个 Web 视图,该视图的网页底部有链接。我有办法处理它们被点击的情况,但它所做的只是将它们打开到一个新的 safari 浏览器中。这不是我 want.I 希望他们留在 web 视图中并让我像那样轻松导航它们的结果。有办法吗?
我试过只使用常规网络视图,但底部的链接不起作用。
这是我目前的情况:
class ViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var myWebview: UIWebView!
@IBOutlet weak var returnButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
prettyReturnButton(returnButton)
let url = NSURL(string: "mywebpage")
myWebview.delegate = self
print("Web page:" , url)
let requestObj = NSURLRequest(URL: url!);
myWebview.loadRequest(requestObj);
myWebview.keyboardDisplayRequiresUserAction = true
}
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
switch navigationType {
case .LinkClicked:
// Open links in Safari
//let newRequestObj = NSURLRequest(URL: request.URL!)
// webView.loadRequest(newRequestObj)
UIApplication.sharedApplication().openURL(request.URL!)
return false
default:
// Handle other navigation types...
return true
}
}
在 webview 委托中,您将要使用相同的 webview 导航到新的 url。
对你来说,这意味着你应该在你的 switch case 中使用
loadRequest
要解决您的问题,您应该使用 UIApplication.sharedApplication().openURL(request.URL!)
并将其替换为对 loadRequest
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
switch navigationType {
case .LinkClicked:
// Open links in Safari
guard let newRequest = request as? URLRequest else { return false }
webView.loadRequest(newRequest)
return false
default:
// Handle other navigation types...
return true
}
}
希望对您有所帮助!祝你有美好的一天!
给你的 UIViewcontroller 委托:UIWebViewDelegate
let url = NSURL(string: "http://www.djmazacool.com")
let req = NSURLRequest(URL: url!)
YOURWEBVIEW.delegate = self
YOURWEBVIEW.loadRequest(req)
func webViewDidStartLoad(webView: UIWebView)
{
// start animation
print("start loaded call")
}
func webViewDidFinishLoad(webView: UIWebView)
{
// load url complete
print("loading done call")
}
输出:
不要忘记在 .plist 文件中添加此属性。
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>