From f93ebcf5fd3f359cef568b61c091f7491b0329bf Mon Sep 17 00:00:00 2001 From: Larry Win Date: Thu, 16 Jan 2025 16:56:21 -0800 Subject: [PATCH 1/2] Account for float dimensions when showing scroller --- .../Text/TextInput/Multiline/RCTMultilineTextInputView.mm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/react-native/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.mm b/packages/react-native/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.mm index 7bc2c53c52c857..798d60ab2c1786 100644 --- a/packages/react-native/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.mm +++ b/packages/react-native/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.mm @@ -134,7 +134,9 @@ - (BOOL)shouldShowVerticalScrollbar CGSize textViewSize = [_backedTextInputView intrinsicContentSize]; NSClipView *clipView = (NSClipView *)_scrollView.contentView; if (textViewSize.height > clipView.bounds.size.height) { - return YES; + // Sometimes dimensions returned are in floating point numbers. + // If the floats are close enough, then don't show the scrollbar even if there is a fraction of overflow with the text. + return textViewSize.height - clipView.bounds.size.height >= 1; }; return NO; From dcee8ff41185b43419e09605476556a0027884ce Mon Sep 17 00:00:00 2001 From: Larry Win Date: Thu, 16 Jan 2025 19:56:17 -0800 Subject: [PATCH 2/2] Use fabs() --- .../Text/TextInput/Multiline/RCTMultilineTextInputView.mm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react-native/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.mm b/packages/react-native/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.mm index 798d60ab2c1786..9be90e85d16870 100644 --- a/packages/react-native/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.mm +++ b/packages/react-native/Libraries/Text/TextInput/Multiline/RCTMultilineTextInputView.mm @@ -136,7 +136,7 @@ - (BOOL)shouldShowVerticalScrollbar if (textViewSize.height > clipView.bounds.size.height) { // Sometimes dimensions returned are in floating point numbers. // If the floats are close enough, then don't show the scrollbar even if there is a fraction of overflow with the text. - return textViewSize.height - clipView.bounds.size.height >= 1; + return fabs(textViewSize.height - clipView.bounds.size.height) >= 1; }; return NO;