fix(WKWebView): StatusBar is gone after fullscreen (iOS 12) (#544)
fixes #62
This commit is contained in:
parent
d864c31b62
commit
c2914a8d73
|
@ -42,6 +42,12 @@ static NSURLCredential* clientAuthenticationCredential;
|
||||||
UIColor * _savedBackgroundColor;
|
UIColor * _savedBackgroundColor;
|
||||||
BOOL _savedHideKeyboardAccessoryView;
|
BOOL _savedHideKeyboardAccessoryView;
|
||||||
BOOL _savedKeyboardDisplayRequiresUserAction;
|
BOOL _savedKeyboardDisplayRequiresUserAction;
|
||||||
|
|
||||||
|
// Workaround for StatusBar appearance bug for iOS 12
|
||||||
|
// https://github.com/react-native-community/react-native-webview/issues/62
|
||||||
|
BOOL _isFullScreenVideoOpen;
|
||||||
|
UIStatusBarStyle _savedStatusBarStyle;
|
||||||
|
BOOL _savedStatusBarHidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)initWithFrame:(CGRect)frame
|
- (instancetype)initWithFrame:(CGRect)frame
|
||||||
|
@ -56,11 +62,13 @@ static NSURLCredential* clientAuthenticationCredential;
|
||||||
_automaticallyAdjustContentInsets = YES;
|
_automaticallyAdjustContentInsets = YES;
|
||||||
_contentInset = UIEdgeInsetsZero;
|
_contentInset = UIEdgeInsetsZero;
|
||||||
_savedKeyboardDisplayRequiresUserAction = YES;
|
_savedKeyboardDisplayRequiresUserAction = YES;
|
||||||
|
_savedStatusBarStyle = RCTSharedApplication().statusBarStyle;
|
||||||
|
_savedStatusBarHidden = RCTSharedApplication().statusBarHidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Workaround for a keyboard dismissal bug present in iOS 12
|
|
||||||
// https://openradar.appspot.com/radar?id=5018321736957952
|
|
||||||
if (@available(iOS 12.0, *)) {
|
if (@available(iOS 12.0, *)) {
|
||||||
|
// Workaround for a keyboard dismissal bug present in iOS 12
|
||||||
|
// https://openradar.appspot.com/radar?id=5018321736957952
|
||||||
[[NSNotificationCenter defaultCenter]
|
[[NSNotificationCenter defaultCenter]
|
||||||
addObserver:self
|
addObserver:self
|
||||||
selector:@selector(keyboardWillHide)
|
selector:@selector(keyboardWillHide)
|
||||||
|
@ -69,8 +77,12 @@ static NSURLCredential* clientAuthenticationCredential;
|
||||||
addObserver:self
|
addObserver:self
|
||||||
selector:@selector(keyboardWillShow)
|
selector:@selector(keyboardWillShow)
|
||||||
name:UIKeyboardWillShowNotification object:nil];
|
name:UIKeyboardWillShowNotification object:nil];
|
||||||
|
|
||||||
|
// Workaround for StatusBar appearance bug for iOS 12
|
||||||
|
// https://github.com/react-native-community/react-native-webview/issues/62
|
||||||
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(toggleFullScreenVideoStatusBars) name:@"_MRMediaRemotePlayerSupportedCommandsDidChangeNotification" object:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -241,6 +253,24 @@ static NSURLCredential* clientAuthenticationCredential;
|
||||||
[super removeFromSuperview];
|
[super removeFromSuperview];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-(void)toggleFullScreenVideoStatusBars
|
||||||
|
{
|
||||||
|
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
|
||||||
|
if (!_isFullScreenVideoOpen) {
|
||||||
|
_isFullScreenVideoOpen = YES;
|
||||||
|
RCTUnsafeExecuteOnMainQueueSync(^{
|
||||||
|
[RCTSharedApplication() setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
_isFullScreenVideoOpen = NO;
|
||||||
|
RCTUnsafeExecuteOnMainQueueSync(^{
|
||||||
|
[RCTSharedApplication() setStatusBarHidden:_savedStatusBarHidden animated:YES];
|
||||||
|
[RCTSharedApplication() setStatusBarStyle:_savedStatusBarStyle animated:YES];
|
||||||
|
});
|
||||||
|
}
|
||||||
|
#pragma clang diagnostic pop
|
||||||
|
}
|
||||||
|
|
||||||
-(void)keyboardWillHide
|
-(void)keyboardWillHide
|
||||||
{
|
{
|
||||||
keyboardTimer = [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(keyboardDisplacementFix) userInfo:nil repeats:false];
|
keyboardTimer = [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(keyboardDisplacementFix) userInfo:nil repeats:false];
|
||||||
|
|
Loading…
Reference in New Issue