Fixed calling TextInput.onChange() on applying autocorrection (iOS)

Reviewed By: javache

Differential Revision: D4444428

fbshipit-source-id: 1b107e79307dedad43bed4ba6f456b4988904764
This commit is contained in:
Valentin Shergin 2017-01-24 16:43:24 -08:00 committed by Facebook Github Bot
parent 3589dec58e
commit 9a9ecea873

View File

@ -346,6 +346,8 @@ static NSAttributedString *removeReactTagFromString(NSAttributedString *string)
[self updateFrames]; [self updateFrames];
} }
#pragma mark - UITextViewDelegate
- (BOOL)textView:(RCTUITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text - (BOOL)textView:(RCTUITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{ {
if (textView.textWasPasted) { if (textView.textWasPasted) {
@ -646,6 +648,12 @@ static BOOL findMismatch(NSString *first, NSString *second, NSRange *firstRange,
- (void)textViewDidEndEditing:(UITextView *)textView - (void)textViewDidEndEditing:(UITextView *)textView
{ {
if (_nativeUpdatesInFlight) {
// iOS does't call `textViewDidChange:` delegate method if the change was happened because of autocorrection
// which was triggered by loosing focus. So, we call it manually.
[self textViewDidChange:textView];
}
[_eventDispatcher sendTextEventWithType:RCTTextEventTypeEnd [_eventDispatcher sendTextEventWithType:RCTTextEventTypeEnd
reactTag:self.reactTag reactTag:self.reactTag
text:textView.text text:textView.text
@ -711,6 +719,8 @@ static BOOL findMismatch(NSString *first, NSString *second, NSRange *firstRange,
return [UIColor colorWithRed:0.0/255.0 green:0.0/255.0 blue:0.098/255.0 alpha:0.22]; return [UIColor colorWithRed:0.0/255.0 green:0.0/255.0 blue:0.098/255.0 alpha:0.22];
} }
#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView - (void)scrollViewDidScroll:(UIScrollView *)scrollView
{ {
if (_onScroll) { if (_onScroll) {