mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
fix: added showSoftInputFocus handling for iOS new architecture (#45298)
Summary: Fixes: https://github.com/facebook/react-native/issues/45297 In iOS New Architecture When we are passing `showSoftInputOnFocus` prop to TextInput as false it should prevent soft keyboard from showing. Here, the problem is in Fabric counterpart of TextInput, there we are not handling `showSoftInputOnFocus` props anywhere. ## Changelog: <!-- Help reviewers and the release process by writing your own changelog entry. Pick one each for the category and type tags: [iOS] [ADDED] - Added handling of `showSoftInputOnFocus` props for new arch. For more details, see: https://reactnative.dev/contributing/changelogs-in-pull-requests Pull Request resolved: https://github.com/facebook/react-native/pull/45298 Test Plan: Below is the screen recording of fix made. https://github.com/facebook/react-native/assets/85783070/de94877a-f684-4f8d-9ec4-a16f9755663e Reviewed By: cipolleschi Differential Revision: D59447432 Pulled By: dmytrorykun fbshipit-source-id: 240854bc1101bdf0b04d7978c557215ff3f8a449
This commit is contained in:
committed by
Facebook GitHub Bot
parent
83392a9cd9
commit
ead50d6b11
+21
@@ -191,6 +191,10 @@ static NSSet<NSNumber *> *returnKeyTypesSet;
|
||||
RCTUITextSmartInsertDeleteTypeFromOptionalBool(newTextInputProps.traits.smartInsertDelete);
|
||||
}
|
||||
|
||||
if (newTextInputProps.traits.showSoftInputOnFocus != oldTextInputProps.traits.showSoftInputOnFocus) {
|
||||
[self _setShowSoftInputOnFocus:newTextInputProps.traits.showSoftInputOnFocus];
|
||||
}
|
||||
|
||||
// Traits `blurOnSubmit`, `clearTextOnFocus`, and `selectTextOnFocus` were omitted intentionally here
|
||||
// because they are being checked on-demand.
|
||||
|
||||
@@ -658,6 +662,23 @@ static NSSet<NSNumber *> *returnKeyTypesSet;
|
||||
[self addSubview:_backedTextInputView];
|
||||
}
|
||||
|
||||
- (void)_setShowSoftInputOnFocus:(BOOL)showSoftInputOnFocus
|
||||
{
|
||||
if (showSoftInputOnFocus) {
|
||||
// Resets to default keyboard.
|
||||
_backedTextInputView.inputView = nil;
|
||||
|
||||
// Without the call to reloadInputViews, the keyboard will not change until the textInput field (the first
|
||||
// responder) loses and regains focus.
|
||||
if (_backedTextInputView.isFirstResponder) {
|
||||
[_backedTextInputView reloadInputViews];
|
||||
}
|
||||
} else {
|
||||
// Hides keyboard, but keeps blinking cursor.
|
||||
_backedTextInputView.inputView = [UIView new];
|
||||
}
|
||||
}
|
||||
|
||||
- (BOOL)_textOf:(NSAttributedString *)newText equals:(NSAttributedString *)oldText
|
||||
{
|
||||
// When the dictation is running we can't update the attributed text on the backed up text view
|
||||
|
||||
Reference in New Issue
Block a user