mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Use window size instead of screen size in InputAccessoryView
Summary: Changelog: [internal] Use window size instead of screen size to layout InputAccessoryView. Reviewed By: PeteTheHeat Differential Revision: D23297141 fbshipit-source-id: d6d7223342d17a2e1b9e5fca6f999b7ad365d056
This commit is contained in:
committed by
Facebook GitHub Bot
parent
9aabc8cdf0
commit
258387ddaa
+8
-7
@@ -10,6 +10,7 @@
|
||||
#import <React/RCTBackedTextInputViewProtocol.h>
|
||||
#import <React/RCTConversions.h>
|
||||
#import <React/RCTSurfaceTouchHandler.h>
|
||||
#import <React/RCTUtils.h>
|
||||
#import <React/UIView+React.h>
|
||||
#import <react/renderer/components/inputaccessory/InputAccessoryComponentDescriptor.h>
|
||||
#import <react/renderer/components/rncore/Props.h>
|
||||
@@ -120,17 +121,17 @@ static UIView<RCTBackedTextInputViewProtocol> *_Nullable RCTFindTextInputWithNat
|
||||
- (void)updateState:(State::Shared const &)state oldState:(State::Shared const &)oldState
|
||||
{
|
||||
_stateTeller.setConcreteState(state);
|
||||
CGSize oldScreenSize = RCTCGSizeFromSize(_stateTeller.getData().value().screenSize);
|
||||
CGSize screenSize = [[UIScreen mainScreen] bounds].size;
|
||||
screenSize.height = std::nan("");
|
||||
if (oldScreenSize.width != screenSize.width) {
|
||||
auto stateData = InputAccessoryState{RCTSizeFromCGSize(screenSize)};
|
||||
CGSize oldViewportSize = RCTCGSizeFromSize(_stateTeller.getData().value().viewportSize);
|
||||
CGSize viewportSize = RCTViewportSize();
|
||||
viewportSize.height = std::nan("");
|
||||
if (oldViewportSize.width != viewportSize.width) {
|
||||
auto stateData = InputAccessoryState{RCTSizeFromCGSize(viewportSize)};
|
||||
_stateTeller.updateState(std::move(stateData));
|
||||
}
|
||||
}
|
||||
|
||||
- (void)updateLayoutMetrics:(const facebook::react::LayoutMetrics &)layoutMetrics
|
||||
oldLayoutMetrics:(const facebook::react::LayoutMetrics &)oldLayoutMetrics
|
||||
- (void)updateLayoutMetrics:(LayoutMetrics const &)layoutMetrics
|
||||
oldLayoutMetrics:(LayoutMetrics const &)oldLayoutMetrics
|
||||
{
|
||||
[super updateLayoutMetrics:layoutMetrics oldLayoutMetrics:oldLayoutMetrics];
|
||||
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ class InputAccessoryComponentDescriptor final
|
||||
auto stateData = state->getData();
|
||||
|
||||
layoutableShadowNode->setSize(
|
||||
Size{stateData.screenSize.width, stateData.screenSize.height});
|
||||
Size{stateData.viewportSize.width, stateData.viewportSize.height});
|
||||
layoutableShadowNode->setPositionType(YGPositionTypeAbsolute);
|
||||
|
||||
ConcreteComponentDescriptor::adopt(shadowNode);
|
||||
|
||||
@@ -20,9 +20,9 @@ namespace react {
|
||||
class InputAccessoryState final {
|
||||
public:
|
||||
InputAccessoryState(){};
|
||||
InputAccessoryState(Size screenSize_) : screenSize(screenSize_){};
|
||||
InputAccessoryState(Size viewportSize_) : viewportSize(viewportSize_){};
|
||||
|
||||
const Size screenSize{};
|
||||
const Size viewportSize{};
|
||||
};
|
||||
|
||||
} // namespace react
|
||||
|
||||
Reference in New Issue
Block a user