检查WebView中的URL是否已更改?

时间:2017-03-03 18:51:11

标签: ios swift wordpress webview uiwebview

我正在尝试检查webView中的URL是否已更改。例如,如果我最初加载像Wordpress登录页面的页面,我想知道它何时更改并重定向到登录页面。我尝试使用此资源enter link description here,但答案似乎不完整,不起作用。

 func validateUrl (stringURL : NSString) -> Bool {

var urlRegEx = "((https|http)://)((\\w|-)+)(([.]|[/])((\\w|-)+))+"
let predicate = NSPredicate(format:"SELF MATCHES %@", argumentArray:[urlRegEx])
var urlTest = NSPredicate.predicateWithSubstitutionVariables(predicate)

return predicate.evaluateWithObject(stringURL)
}

urlTest永远不会被调用,所以我不确定它的用途。

  if (validateUrl(stringURL: "http://google.com")) {
        //will return true
        print("Do Stuff");
    }
    else {
        print("OTHER STUFf")
        //If it is false then do stuff here.
    }

然后调用此函数

 func webView(WebViewNews: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool {
if (validateUrl(request.URL().absoluteString())) {
    //if will return true
    print("Do Stuff");
 }
}

我在代码的末尾添加了一个返回函数,但该示例不包含返回值。我对Webview的经验很少,所以任何建议或帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

使用UIWebViewDelegate的webViewDidFinishLoad函数获取webview中加载的当前URL。每次webview加载URL时,都会调用webViewDidFinishLoad函数。

class YourClass: UIViewController, UIWebViewDelegate {

    let initialURL = URL(string: "https://www.google.com.pe/")
    @IBOutlet weak var webView:UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        webView.loadRequest( URLRequest(url: initialURL) )
    }

    func webViewDidFinishLoad(_ webView: UIWebView) {
        if webView.request != URLRequest(url: initialURL!) {
            //DO YOUR STUFF HERE
        }
    }

}