To read out the URL of what a Web View is currently displaying we can use this method:
NSURL *myURL = [[NSURL alloc]init];
myURL = self.myWebView.request.URL.absoluteURL;
Or, if we’d like to retrieve this as a string:
myString = self.myWebView.request.URL.absoluteString;
If you’re conforming to the UIWebViewDelegate protocol the webView:didFailLoadWithError: method gets triggered when there has been a problem.
Call it like this and display an error message (in this case a UIAlertView):
This method is also a good opportunity to stop any loading animations you’ve got going.
It’s always good to have something happening while you’re loading a UIWebView. You can use the UIActivityIndicator for this. It’s basically an animated GIF file that you can connect to your code like many other elements. To make it work we need to conform to the UIWebViewDelegate protocol and then query our web view to see if he’s finished loading.
Here’s how we do that:
- add the protocol to your header file
- make sure you drag from your Web View to your View Controller’s delegate (control drag to the orange oval in your storyboard, at the bottom of your view controller)
- add the method webViewDidFinishLoad:(UIWebView *)myWebView
- in it call the stopAnimating method for your spinning wheel.
In the storyboard make sure that you set the behaviour of the Activity Indicator to “animating” and “hides when stopped”.
Here are my files:
You can create the same effect in the status bar of your application. Click here for details.
Everything has to be that bit more complicated with iOS doesn’t it?