I have a login screen in UIWebView.... and suppose i have entered information and click to button in UIWebView and suddenly my Internet goes off... then how to check i dont have Internet.
Actually I am showing Activity Indicator as soon as i clicked to signin button so my UI getting stuck and i am not able to hide indicator.
This delegate is also not getting called if i dont have internet
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
How to fix this problem ?
Apple provide a substantial sample project that demonstrates how you can use networking classes to detect whether you have internet connectivity - it's a fair bit of code, but it's harder than it looks!
It is very straightforward, and probably encouraged, to integrate Apple's reachability code into your application to check for connectivity.
The sample code can be downloaded here: http://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
//check internet connection using Reachability class.
}
Related
i am using this method as follows.
- (void)webViewDidFinishLoading:(UIWebView *)webView
This method to know whether the webview is finished loading or not but once this method is
called i am not getting the web content on my view, it is taking some time to show.
My problem is i want to know when the webview is fully loaded with the content.
Can any one please help me on this.
Thanks in advance.
paas web view delegates and use these function -
- (void)webViewDidFinishLoad:(UIWebView *)webView;
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;
I am currently developing a little webapp with iWebKit I joined a UIWebView.
And I have a little problem, I would like the external links before opening in Safari displays a alertview "This link opens in a new window".
AlertView With:
Title: External Links (No URL)
Message: Would you open this link external mobile safari ?
Button: OK Cancel
How to do that just please?
Thank you very much for your help;)
In the object that is designated as the UIWebViewDelegate add the following:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
return [self verifyUserWantsToNavigateAwayFromApp];
}
The method that you'll have to write verifyUserWantsToNavigateAwayFromApp. Is where you should pop up the alerts and wait for the UIAlertViewDelegate to get the user's answer. Return YES to navigate, NO to cancel.
My app features content that (for text formatting reasons) is presented in an UIWebView. Within the content there are links, some of which should open their target in mobile Safari, while others should navigate within the content.
So far, I've catched the link requests using a UIWebView delegate. In my implementation of
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
I'd check the requests URL using lastPathComponent or pathComponents for known elements to determine whether to open the link externally or within the view.
However, I just found out said methods are only available since iOS 4.0, which would render the app useless on iPad. Plus I have the feeling I'm using a dirty solution here.
Is there another way to somehow "mark" the links within my content in a way that makes them easy to distinguish later, when processing the request in the delegate method?
Thanks alot!!
You could covert the URL request into a string, and do a compare for a subdirectory on your website, such as in URLs that only start with "http://www.sample.com/myapp/myappswebcontent/", against the initial substring of your URL. Anything else, send to Safari.
You should set a policy delegate of web view:
For instance in the controller, that contains a web view
[webView setPolicyDelegate:self];
and then override a decidePolicyForNavigation method (this is just an example):
- (void)webView:(WebView *)sender decidePolicyForNavigationAction: (NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id <WebPolicyDecisionListener>)listener
{
if ([[actionInformation objectForKey:WebActionNavigationTypeKey] intValue] == WebNavigationTypeLinkClicked) {
[listener ignore];
[[NSWorkspace sharedWorkspace] openURL:[request URL]];
}
else
[listener use];
}
you can distinguish there kind of link and ignore or use the listener. If you ignore it, you can open the link in safari, if you use it, the link will open in your webview.
HTH
I want to take a user OUT of my app and into the App Store when they click on a link within a UIWebView in my app. But when I click on the link, nothing happens (sim AND device both). How can I jump to the App Store from a UIWebView link in my iPhone app?
BY THE WAY:
The link in my UIWebView html is as currently follows (minus the self-promotion)
Download Now
Hmm. Perhaps you’re right. In that case, simply use this function of the UIWebViewDelegate:
- (BOOL)webView:(UIWebView *)webView
shouldStartLoadWithRequest:(NSURLRequest *)request
navigationType:(UIWebViewNavigationType)navigationType
Parse the NSURLRequest to see if it’s an iTunes link and if it is, do this:
[[UIApplication sharedApplication] openURL:someURL];
use code:
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:#"http://itunes.apple.com/xxxxx"]];
is there any way to get informed, when a UIWebview has loaded a new page?
The documentation doesn't list a delegate for this.In my case, I want to know, when UIWebview is done with navigation in iUI pages.
Best Regards,
Stefan
variant A: i cannot understand what do you want.
variant B: you didn't see method like
- (void)webViewDidFinishLoad:(UIWebView *)webView
it is called every time webview finishes loading new content
... what Morion said, only I think this method might be more along the lines of what he is looking for:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
It gets called every time the user clicks on a link.
Please see the UIWebViewDelegate docs:
http://developer.apple.com/iphone/library/documentation/uikit/reference/UIWebViewDelegate_Protocol/Reference/Reference.html
the shouldStartLoadWithRequest message is sent to the delegate every time the webview loads a new page. So you should try there.