From 5ceeb050b6bc8da0d5841b09c270b47f37a67adf Mon Sep 17 00:00:00 2001 From: George Malayil-Philip Date: Thu, 5 Dec 2013 16:22:28 +0530 Subject: [PATCH] Added ability to customize how networkActivityIndicator is managed via block property --- .../SVModalWebViewController.h | 6 ++++- .../SVModalWebViewController.m | 10 +++++++++ SVWebViewController/SVWebViewController.h | 6 ++++- SVWebViewController/SVWebViewController.m | 22 ++++++++++++++----- 4 files changed, 37 insertions(+), 7 deletions(-) diff --git a/SVWebViewController/SVModalWebViewController.h b/SVWebViewController/SVModalWebViewController.h index aa4d84c..6d3b17a 100644 --- a/SVWebViewController/SVModalWebViewController.h +++ b/SVWebViewController/SVModalWebViewController.h @@ -10,7 +10,11 @@ @class SVWebViewController; -@interface SVModalWebViewController : UINavigationController +@interface SVModalWebViewController : UINavigationController { + void(^_customSetNetworkActivityIndicatorVisible)(BOOL networkActivityIndicatorVisible); +} + +@property (nonatomic, copy) void(^customSetNetworkActivityIndicatorVisible)(BOOL networkActivityIndicatorVisible); - (id)initWithAddress:(NSString*)urlString; - (id)initWithURL:(NSURL *)URL; diff --git a/SVWebViewController/SVModalWebViewController.m b/SVWebViewController/SVModalWebViewController.m index f801fa2..1e31118 100644 --- a/SVWebViewController/SVModalWebViewController.m +++ b/SVWebViewController/SVModalWebViewController.m @@ -18,6 +18,8 @@ @interface SVModalWebViewController () @implementation SVModalWebViewController +@synthesize customSetNetworkActivityIndicatorVisible = _customSetNetworkActivityIndicatorVisible; + #pragma mark - Initialization @@ -47,4 +49,12 @@ - (void)viewWillAppear:(BOOL)animated { self.navigationBar.tintColor = self.barsTintColor; } +#pragma mark - Accessors +-(void) setCustomSetNetworkActivityIndicatorVisible:(void (^)(BOOL))customSetNetworkActivityIndicatorVisible +{ + _customSetNetworkActivityIndicatorVisible = customSetNetworkActivityIndicatorVisible; + + self.webViewController.customSetNetworkActivityIndicatorVisible = customSetNetworkActivityIndicatorVisible; +} + @end diff --git a/SVWebViewController/SVWebViewController.h b/SVWebViewController/SVWebViewController.h index 42e9dfe..ef52dc8 100644 --- a/SVWebViewController/SVWebViewController.h +++ b/SVWebViewController/SVWebViewController.h @@ -8,7 +8,11 @@ #import "SVModalWebViewController.h" -@interface SVWebViewController : UIViewController +@interface SVWebViewController : UIViewController { + void(^_customSetNetworkActivityIndicatorVisible)(BOOL networkActivityIndicatorVisible); +} + +@property (copy) void(^customSetNetworkActivityIndicatorVisible)(BOOL networkActivityIndicatorVisible); - (id)initWithAddress:(NSString*)urlString; - (id)initWithURL:(NSURL*)URL; diff --git a/SVWebViewController/SVWebViewController.m b/SVWebViewController/SVWebViewController.m index 2e08ebc..fc2540a 100644 --- a/SVWebViewController/SVWebViewController.m +++ b/SVWebViewController/SVWebViewController.m @@ -38,11 +38,13 @@ - (void)actionButtonClicked:(UIBarButtonItem *)sender; @implementation SVWebViewController +@synthesize customSetNetworkActivityIndicatorVisible = _customSetNetworkActivityIndicatorVisible; + #pragma mark - Initialization - (void)dealloc { [self.webView stopLoading]; - [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; + [self setNetworkActivityIndicatorVisible:NO]; self.webView.delegate = nil; } @@ -63,6 +65,16 @@ - (void)loadURL:(NSURL *)pageURL { [self.webView loadRequest:[NSURLRequest requestWithURL:pageURL]]; } +- (void)setNetworkActivityIndicatorVisible:(BOOL) networkActivityIndicatorVisible +{ + if (self.customSetNetworkActivityIndicatorVisible != nil) { + self.customSetNetworkActivityIndicatorVisible(networkActivityIndicatorVisible); + return; + } + + [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:networkActivityIndicatorVisible]; +} + #pragma mark - View lifecycle - (void)loadView { @@ -105,7 +117,7 @@ - (void)viewWillDisappear:(BOOL)animated { - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; - [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; + [self setNetworkActivityIndicatorVisible:NO]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation { @@ -225,20 +237,20 @@ - (void)updateToolbarItems { #pragma mark - UIWebViewDelegate - (void)webViewDidStartLoad:(UIWebView *)webView { - [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; + [self setNetworkActivityIndicatorVisible:YES]; [self updateToolbarItems]; } - (void)webViewDidFinishLoad:(UIWebView *)webView { - [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; + [self setNetworkActivityIndicatorVisible:NO]; self.navigationItem.title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"]; [self updateToolbarItems]; } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { - [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; + [self setNetworkActivityIndicatorVisible:NO]; [self updateToolbarItems]; }