2017-03-03 13 views
0

WebViewでURLが変更されているかどうかを確認しようとしています。たとえば、最初にWordpressのサインインページのようなページを読み込んで、そのページがいつ変更され、ログインページにリダイレクトされたのかを知りたかったのです。私はこのリソースenter link description hereを使ってみましたが、答えは不完全で、うまくいかないようです。WebViewでURLが変更されていないか確認してください。

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での経験はほとんどないので、アドバイスや助けをいただければ幸いです。

答えて

0

UIWebViewDelegateのwebViewDidFinishLoad関数を使用して、Webviewにロードされている現在のURLを取得します。 webviewが呼び出すたびに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 
     } 
    } 

} 
関連する問題