diff --git a/ios/RCTWebViewBridge.h b/ios/RCTWebViewBridge.h index 09006303..0793aab5 100644 --- a/ios/RCTWebViewBridge.h +++ b/ios/RCTWebViewBridge.h @@ -43,6 +43,7 @@ shouldStartLoadForRequest:(NSMutableDictionary *)request - (void)goForward; - (void)goBack; - (void)reload; +- (void)stopLoading; - (void)sendToBridge:(NSString *)message; @end diff --git a/ios/RCTWebViewBridge.m b/ios/RCTWebViewBridge.m index f97efeba..0dcc8e14 100644 --- a/ios/RCTWebViewBridge.m +++ b/ios/RCTWebViewBridge.m @@ -86,6 +86,10 @@ - (void)reload [_webView reload]; } +-(void)stopLoading { + [_webView stopLoading]; +} + - (void)sendToBridge:(NSString *)message { //we are warpping the send message in a function to make sure that if diff --git a/ios/RCTWebViewBridgeManager.m b/ios/RCTWebViewBridgeManager.m index c3b1e6b9..dcb1dcc7 100644 --- a/ios/RCTWebViewBridgeManager.m +++ b/ios/RCTWebViewBridgeManager.m @@ -102,6 +102,18 @@ - (UIView *)view }]; } +RCT_EXPORT_METHOD(stopLoading:(nonnull NSNumber *)reactTag) +{ + [self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary *viewRegistry) { + RCTWebViewBridge *view = viewRegistry[reactTag]; + if (![view isKindOfClass:[RCTWebViewBridge class]]) { + RCTLogError(@"Invalid view returned from registry, expecting RCTWebViewBridge, got: %@", view); + } else { + [view stopLoading]; + } + }]; +} + RCT_EXPORT_METHOD(sendToBridge:(nonnull NSNumber *)reactTag value:(NSString*)message) { diff --git a/webview-bridge/index.ios.js b/webview-bridge/index.ios.js index b21dbee9..44dc8131 100644 --- a/webview-bridge/index.ios.js +++ b/webview-bridge/index.ios.js @@ -226,6 +226,14 @@ var WebViewBridge = React.createClass({ ); }, + stopLoading: function() { + UIManager.dispatchViewManagerCommand( + this.getWebViewBridgeHandle(), + UIManager.RCTWebViewBridge.Commands.stopLoading, + null + ); + }, + sendToBridge: function (message: string) { WebViewBridgeManager.sendToBridge(this.getWebViewBridgeHandle(), message); },