如何加载 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

loadRequest documentation

要解决您的问题,您应该使用 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>