Add patch for `RCTBaseTextInput` fixing `selectTextOnFocus` prop (#4533)
* create patch * remove js fix in `SearchScreen`zio/stable
parent
10c6035f31
commit
89be5a442c
|
@ -1,3 +1,29 @@
|
||||||
|
diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm
|
||||||
|
index b0d71dc..9974932 100644
|
||||||
|
--- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm
|
||||||
|
+++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm
|
||||||
|
@@ -377,10 +377,6 @@ - (void)textInputDidBeginEditing
|
||||||
|
self.backedTextInputView.attributedText = [NSAttributedString new];
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (_selectTextOnFocus) {
|
||||||
|
- [self.backedTextInputView selectAll:nil];
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
[_eventDispatcher sendTextEventWithType:RCTTextEventTypeFocus
|
||||||
|
reactTag:self.reactTag
|
||||||
|
text:[self.backedTextInputView.attributedText.string copy]
|
||||||
|
@@ -611,6 +607,10 @@ - (UIView *)reactAccessibilityElement
|
||||||
|
- (void)reactFocus
|
||||||
|
{
|
||||||
|
[self.backedTextInputView reactFocus];
|
||||||
|
+
|
||||||
|
+ if (_selectTextOnFocus) {
|
||||||
|
+ [self.backedTextInputView selectAll:nil];
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)reactBlur
|
||||||
diff --git a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
|
diff --git a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h b/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
|
||||||
index e9b330f..1ecdf0a 100644
|
index e9b330f..1ecdf0a 100644
|
||||||
--- a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
|
--- a/node_modules/react-native/React/Views/RefreshControl/RCTRefreshControl.h
|
||||||
|
|
|
@ -11,3 +11,10 @@ in the RN repo: https://github.com/facebook/react-native/issues/43388
|
||||||
Patching `RCTRefreshControl.m` and `RCTRefreshControl.h` to add a new `forwarderBeginRefreshing` method to the class.
|
Patching `RCTRefreshControl.m` and `RCTRefreshControl.h` to add a new `forwarderBeginRefreshing` method to the class.
|
||||||
This method is used by `ExpoScrollForwarder` to initiate a refresh of the underlying `UIScrollView` from inside that
|
This method is used by `ExpoScrollForwarder` to initiate a refresh of the underlying `UIScrollView` from inside that
|
||||||
module.
|
module.
|
||||||
|
|
||||||
|
|
||||||
|
## TextInput Patch - `selectTextOnFocus` fix
|
||||||
|
|
||||||
|
Patching `RCTBaseTextInputView.m` to fix an issue where `selectTextOnFocus` does not work as expected on iOS 17. This
|
||||||
|
patch _only_ fixes the Paper version of `TextInput`. If we migrate to Fabric and the fix has not been made upstream,
|
||||||
|
we can apply the same fix. See https://github.com/facebook/react-native/pull/44307.
|
||||||
|
|
|
@ -30,7 +30,7 @@ import {makeProfileLink} from '#/lib/routes/links'
|
||||||
import {NavigationProp} from '#/lib/routes/types'
|
import {NavigationProp} from '#/lib/routes/types'
|
||||||
import {augmentSearchQuery} from '#/lib/strings/helpers'
|
import {augmentSearchQuery} from '#/lib/strings/helpers'
|
||||||
import {logger} from '#/logger'
|
import {logger} from '#/logger'
|
||||||
import {isIOS, isNative, isWeb} from '#/platform/detection'
|
import {isNative, isWeb} from '#/platform/detection'
|
||||||
import {listenSoftReset} from '#/state/events'
|
import {listenSoftReset} from '#/state/events'
|
||||||
import {useModerationOpts} from '#/state/preferences/moderation-opts'
|
import {useModerationOpts} from '#/state/preferences/moderation-opts'
|
||||||
import {useActorAutocompleteQuery} from '#/state/queries/actor-autocomplete'
|
import {useActorAutocompleteQuery} from '#/state/queries/actor-autocomplete'
|
||||||
|
@ -802,12 +802,6 @@ let SearchInputBox = ({
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
setShowAutocomplete(true)
|
setShowAutocomplete(true)
|
||||||
if (isIOS) {
|
|
||||||
// We rely on selectTextOnFocus, but it's broken on iOS:
|
|
||||||
// https://github.com/facebook/react-native/issues/41988
|
|
||||||
textInput.current?.setSelection(0, searchText.length)
|
|
||||||
// We still rely on selectTextOnFocus for it to be instant on Android.
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
onChangeText={onChangeText}
|
onChangeText={onChangeText}
|
||||||
|
|
Loading…
Reference in New Issue