From fd2b02fe2ca303b903b0dfdfeb841e4fc90f882f Mon Sep 17 00:00:00 2001 From: Jacob Parker Date: Tue, 4 Jul 2023 16:16:33 +0100 Subject: [PATCH] Update safe area frame when keyboard shows/hides (#407) * Update safe area frame when keyboard shows/hides Happens in pageSheet/formSheet presentation styles * Update RNCSafeAreaProviderComponentView.mm --- ios/Fabric/RNCSafeAreaProviderComponentView.mm | 9 +++++++++ ios/RNCSafeAreaProvider.m | 15 +++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/ios/Fabric/RNCSafeAreaProviderComponentView.mm b/ios/Fabric/RNCSafeAreaProviderComponentView.mm index f80078f..ee35c14 100644 --- a/ios/Fabric/RNCSafeAreaProviderComponentView.mm +++ b/ios/Fabric/RNCSafeAreaProviderComponentView.mm @@ -24,6 +24,15 @@ - (instancetype)initWithFrame:(CGRect)frame if (self = [super initWithFrame:frame]) { static const auto defaultProps = std::make_shared(); _props = defaultProps; + + [NSNotificationCenter.defaultCenter addObserver:self + selector:@selector(invalidateSafeAreaInsets) + name:UIKeyboardDidShowNotification + object:nil]; + [NSNotificationCenter.defaultCenter addObserver:self + selector:@selector(invalidateSafeAreaInsets) + name:UIKeyboardDidHideNotification + object:nil]; } return self; diff --git a/ios/RNCSafeAreaProvider.m b/ios/RNCSafeAreaProvider.m index e5b1cf4..9081326 100644 --- a/ios/RNCSafeAreaProvider.m +++ b/ios/RNCSafeAreaProvider.m @@ -10,6 +10,21 @@ @implementation RNCSafeAreaProvider { BOOL _initialInsetsSent; } +- (instancetype)init +{ + if ((self = [super init])) { + [NSNotificationCenter.defaultCenter addObserver:self + selector:@selector(invalidateSafeAreaInsets) + name:UIKeyboardDidShowNotification + object:nil]; + [NSNotificationCenter.defaultCenter addObserver:self + selector:@selector(invalidateSafeAreaInsets) + name:UIKeyboardDidHideNotification + object:nil]; + } + return self; +} + - (void)safeAreaInsetsDidChange { [self invalidateSafeAreaInsets];