From d7fa81f18110f0dc0f310a5c066d9a30020ca830 Mon Sep 17 00:00:00 2001 From: Valentin Shergin Date: Thu, 1 Feb 2018 14:00:12 -0800 Subject: [PATCH] Fixed double `onChange` event triggering from on iOS Summary: The problem was recently introduced in the last refactoring of the Text module. There are two problem actually: (1) Compare this current code with stable version. In the stable version the event is only triggered here: https://github.com/facebook/react-native/blob/0.52-stable/Libraries/Text/RCTTextField.m#L132-L140 In the new version the event is triggered in two places (which is obviously wrong). (2) Executing `[_eventDispatcher sendTextEventWithType:RCTTextEventTypeChange:...]` and _onChange() actually do the same thing. Historically, the single-line used the first approach and multi-line used second one. When we unify the logic, mixed both of them, which was apparenly wrong. So, we have to remove another call of `[_eventDispatcher sendTextEventWithType:RCTTextEventTypeChange:...]`. The the future we have to completly remove usage of `_eventDispatcher` from this component. Depends on D6854770. Reviewed By: fkgozali Differential Revision: D6869678 fbshipit-source-id: 6705ee8dda2681ae184ef6716238cc8b62efeff1 --- Libraries/Text/TextInput/RCTBaseTextInputView.m | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/Libraries/Text/TextInput/RCTBaseTextInputView.m b/Libraries/Text/TextInput/RCTBaseTextInputView.m index 13b81505821019..177b4afccd25ea 100644 --- a/Libraries/Text/TextInput/RCTBaseTextInputView.m +++ b/Libraries/Text/TextInput/RCTBaseTextInputView.m @@ -286,12 +286,6 @@ - (BOOL)textInputShouldChangeTextInRange:(NSRange)range replacementText:(NSStrin }); } - [_eventDispatcher sendTextEventWithType:RCTTextEventTypeChange - reactTag:self.reactTag - text:backedTextInputView.attributedText.string - key:nil - eventCount:_nativeEventCount]; - return YES; } @@ -324,12 +318,6 @@ - (void)textInputDidChange @"eventCount": @(_nativeEventCount), }); } - - [_eventDispatcher sendTextEventWithType:RCTTextEventTypeChange - reactTag:self.reactTag - text:backedTextInputView.attributedText.string - key:nil - eventCount:_nativeEventCount]; } - (void)textInputDidChangeSelection