Skip to content

Commit 03b57d9

Browse files
RSNarafacebook-github-bot
authored andcommitted
Implement 'goForward' and 'goBack' methods
Summary: @public This diff implements the `goForward` and `goBack` methods on `WKWebView`. 1. `goForward` moves the web view one screen forward in the browser history. 1. `goBack` moves the web view one screen back in the browser history. Reviewed By: shergin Differential Revision: D6367495 fbshipit-source-id: e100ca00e92a6eaa30d2af1af642ba79a9c9feae
1 parent 0022354 commit 03b57d9

File tree

3 files changed

+36
-0
lines changed

3 files changed

+36
-0
lines changed

React/Views/RCTWKWebView.h

+2
Original file line numberDiff line numberDiff line change
@@ -25,5 +25,7 @@
2525

2626
- (void)postMessage:(NSString *)message;
2727
- (void)injectJavaScript:(NSString *)script;
28+
- (void)goForward;
29+
- (void)goBack;
2830

2931
@end

React/Views/RCTWKWebView.m

+10
Original file line numberDiff line numberDiff line change
@@ -260,4 +260,14 @@ - (void)injectJavaScript:(NSString *)script
260260
[self evaluateJS: script thenCall: nil];
261261
}
262262

263+
- (void)goForward
264+
{
265+
[_webView goForward];
266+
}
267+
268+
- (void)goBack
269+
{
270+
[_webView goBack];
271+
}
272+
263273
@end

React/Views/RCTWKWebViewManager.m

+24
Original file line numberDiff line numberDiff line change
@@ -57,4 +57,28 @@ - (UIView *)view
5757
}];
5858
}
5959

60+
RCT_EXPORT_METHOD(goBack:(nonnull NSNumber *)reactTag)
61+
{
62+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, RCTWKWebView *> *viewRegistry) {
63+
RCTWKWebView *view = viewRegistry[reactTag];
64+
if (![view isKindOfClass:[RCTWKWebView class]]) {
65+
RCTLogError(@"Invalid view returned from registry, expecting RCTWebView, got: %@", view);
66+
} else {
67+
[view goBack];
68+
}
69+
}];
70+
}
71+
72+
RCT_EXPORT_METHOD(goForward:(nonnull NSNumber *)reactTag)
73+
{
74+
[self.bridge.uiManager addUIBlock:^(__unused RCTUIManager *uiManager, NSDictionary<NSNumber *, RCTWKWebView *> *viewRegistry) {
75+
RCTWKWebView *view = viewRegistry[reactTag];
76+
if (![view isKindOfClass:[RCTWKWebView class]]) {
77+
RCTLogError(@"Invalid view returned from registry, expecting RCTWebView, got: %@", view);
78+
} else {
79+
[view goForward];
80+
}
81+
}];
82+
}
83+
6084
@end

0 commit comments

Comments
 (0)