From a947d6c081e4d1985dbb440f3c82bc92503db112 Mon Sep 17 00:00:00 2001 From: Jerrold Poh Date: Tue, 15 Oct 2013 10:13:42 +1100 Subject: [PATCH 1/2] Added ability to implement UIWebViewDelegate's delegates --- SVWebViewController/SVModalWebViewController.m | 4 ++++ SVWebViewController/SVWebViewController.h | 11 +++++++++++ SVWebViewController/SVWebViewController.m | 12 ++++++++++++ 3 files changed, 27 insertions(+) diff --git a/SVWebViewController/SVModalWebViewController.m b/SVWebViewController/SVModalWebViewController.m index ccd8f11..3e8b021 100644 --- a/SVWebViewController/SVModalWebViewController.m +++ b/SVWebViewController/SVModalWebViewController.m @@ -46,4 +46,8 @@ - (void)setAvailableActions:(SVWebViewControllerAvailableActions)newAvailableAct self.webViewController.availableActions = newAvailableActions; } +- (void)setDelegate:(id)delegate { + self.webViewController.delegate = delegate; +} + @end diff --git a/SVWebViewController/SVWebViewController.h b/SVWebViewController/SVWebViewController.h index 78d8408..84b004d 100644 --- a/SVWebViewController/SVWebViewController.h +++ b/SVWebViewController/SVWebViewController.h @@ -10,11 +10,22 @@ #import "SVModalWebViewController.h" +@protocol SVWebViewDelegate + +@optional +- (void)webViewDidStartLoad:(UIWebView*)webView; +- (void)webViewDidFinishLoad:(UIWebView*)webView; +- (void)webView:(UIWebView*)webView didFailLoadWithError:(NSError *)error; + +@end + + @interface SVWebViewController : UIViewController - (id)initWithAddress:(NSString*)urlString; - (id)initWithURL:(NSURL*)URL; @property (nonatomic, readwrite) SVWebViewControllerAvailableActions availableActions; +@property (nonatomic, strong) id delegate; @end diff --git a/SVWebViewController/SVWebViewController.m b/SVWebViewController/SVWebViewController.m index 07976c4..e985732 100644 --- a/SVWebViewController/SVWebViewController.m +++ b/SVWebViewController/SVWebViewController.m @@ -290,6 +290,10 @@ - (void)updateToolbarItems { - (void)webViewDidStartLoad:(UIWebView *)webView { [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; [self updateToolbarItems]; + + if ([self.delegate respondsToSelector:@selector(webViewDidStartLoad:)]) { + [self.delegate webViewDidStartLoad:webView]; + } } @@ -298,11 +302,19 @@ - (void)webViewDidFinishLoad:(UIWebView *)webView { self.navigationItem.title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"]; [self updateToolbarItems]; + + if ([self.delegate respondsToSelector:@selector(webViewDidFinishLoad:)]) { + [self.delegate webViewDidFinishLoad:webView]; + } } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; [self updateToolbarItems]; + + if ([self.delegate respondsToSelector:@selector(webView:didFailLoadWithError:)]) { + [self.delegate webView:webView didFailLoadWithError:error]; + } } #pragma mark - Target actions From 2149d3b987979a36bce19f8bb08859b7554a5e17 Mon Sep 17 00:00:00 2001 From: Jerrold Poh Date: Tue, 15 Oct 2013 10:26:48 +1100 Subject: [PATCH 2/2] Updating names for delegate callback Clashes with default UIWebView's callback names --- SVWebViewController/SVModalWebViewController.m | 2 +- SVWebViewController/SVWebViewController.h | 8 ++++---- SVWebViewController/SVWebViewController.m | 12 ++++++------ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/SVWebViewController/SVModalWebViewController.m b/SVWebViewController/SVModalWebViewController.m index 3e8b021..c94bffb 100644 --- a/SVWebViewController/SVModalWebViewController.m +++ b/SVWebViewController/SVModalWebViewController.m @@ -47,7 +47,7 @@ - (void)setAvailableActions:(SVWebViewControllerAvailableActions)newAvailableAct } - (void)setDelegate:(id)delegate { - self.webViewController.delegate = delegate; + self.webViewController.svDelegate = delegate; } @end diff --git a/SVWebViewController/SVWebViewController.h b/SVWebViewController/SVWebViewController.h index 84b004d..27cf32d 100644 --- a/SVWebViewController/SVWebViewController.h +++ b/SVWebViewController/SVWebViewController.h @@ -13,9 +13,9 @@ @protocol SVWebViewDelegate @optional -- (void)webViewDidStartLoad:(UIWebView*)webView; -- (void)webViewDidFinishLoad:(UIWebView*)webView; -- (void)webView:(UIWebView*)webView didFailLoadWithError:(NSError *)error; +- (void)svWebViewDidStartLoad:(UIWebView*)webView; +- (void)svWebViewDidFinishLoad:(UIWebView*)webView; +- (void)svWebView:(UIWebView*)webView didFailLoadWithError:(NSError *)error; @end @@ -26,6 +26,6 @@ - (id)initWithURL:(NSURL*)URL; @property (nonatomic, readwrite) SVWebViewControllerAvailableActions availableActions; -@property (nonatomic, strong) id delegate; +@property (nonatomic, strong) id svDelegate; @end diff --git a/SVWebViewController/SVWebViewController.m b/SVWebViewController/SVWebViewController.m index e985732..48a0f5f 100644 --- a/SVWebViewController/SVWebViewController.m +++ b/SVWebViewController/SVWebViewController.m @@ -291,8 +291,8 @@ - (void)webViewDidStartLoad:(UIWebView *)webView { [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES]; [self updateToolbarItems]; - if ([self.delegate respondsToSelector:@selector(webViewDidStartLoad:)]) { - [self.delegate webViewDidStartLoad:webView]; + if ([self.svDelegate respondsToSelector:@selector(svWebViewDidStartLoad:)]) { + [self.svDelegate svWebViewDidStartLoad:webView]; } } @@ -303,8 +303,8 @@ - (void)webViewDidFinishLoad:(UIWebView *)webView { self.navigationItem.title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"]; [self updateToolbarItems]; - if ([self.delegate respondsToSelector:@selector(webViewDidFinishLoad:)]) { - [self.delegate webViewDidFinishLoad:webView]; + if ([self.svDelegate respondsToSelector:@selector(svWebViewDidFinishLoad:)]) { + [self.svDelegate svWebViewDidFinishLoad:webView]; } } @@ -312,8 +312,8 @@ - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO]; [self updateToolbarItems]; - if ([self.delegate respondsToSelector:@selector(webView:didFailLoadWithError:)]) { - [self.delegate webView:webView didFailLoadWithError:error]; + if ([self.svDelegate respondsToSelector:@selector(svWebView:didFailLoadWithError:)]) { + [self.svDelegate svWebView:webView didFailLoadWithError:error]; } }