react-native/Libraries/Text
Ben Nham 1fce89176b Explicitly set default background color in RCTTextView
Summary:
RCTShadowText currently explicitly defaults to black text color:

https://github.com/facebook/react-native/blob/d46ac11/Libraries/Text/RCTShadowText.m#L204

However, the UITextView used by RCTTextInput doesn't explicitly default to black text color.

This causes issues when RCTTextInput is in rich text editing mode (i.e. when the <TextInput> element uses child <Text> nodes to provide extra styling info) and the client doesn't provide us with any explicit color info. In this case, the following series of badness occurs:

1. -[UITextView attributedText] will return an attributed string without the NSColor property set.
2. -[RCTShadowText attributedString] will return an attributed string with NSColor equal to blackColor.
3. The `[_textView.attributedText isEqualToAttributedString:_pendingAttributedText]` check in -performPendingTextUpdate will fail and causes -[UITextView setText:] to be called.
4. -setText: clears the marked text range in the text view, which breaks multi-character autocomplete (e.g. QWERTY input methods for CJK languages).

The easiest fix for now is to just make sure RCTUITextView and RCTShadowText default to the same text color.

Reviewed By: nicklockwood

Differential Revision: D3368726

fbshipit-source-id: a92cb188c60bac80d963af6b1f2a09f27ae084f5
2016-06-06 12:58:37 -07:00
..
RCTText.xcodeproj Text highlighting on iOS 2015-07-24 08:41:58 -08:00
RCTRawTextManager.h [ReactNative] Expanded license on obj-c files 2015-03-23 13:18:29 -08:00
RCTRawTextManager.m Convert alloc/init to new to please linter 2015-08-17 08:46:00 -07:00
RCTShadowRawText.h [ReactNative] Expanded license on obj-c files 2015-03-23 13:18:29 -08:00
RCTShadowRawText.m Fix Groups text input 2015-11-04 04:09:27 -08:00
RCTShadowText.h backout (and remove) props.lineBreakMode from Text 2016-03-17 11:48:24 -07:00
RCTShadowText.m iOS: Enable views to be nested within <Text> 2016-05-31 10:28:25 -07:00
RCTText.h Fixed crash in RCTText due to NSTextContainer/NSLayoutManager being accessed concurrently from main and shadow queues 2015-05-26 18:52:46 -08:00
RCTText.m Refactored subview management 2016-06-06 10:28:33 -07:00
RCTTextField.h Open sourced the onSelectionChange event 2015-11-14 09:44:30 -08:00
RCTTextField.m Refactored subview management 2016-06-06 10:28:33 -07:00
RCTTextFieldManager.h Migrated RCTText into FBReactKit 2015-07-08 07:13:00 -08:00
RCTTextFieldManager.m Add support for selectionColor on Android TextInput 2016-02-03 05:49:32 -08:00
RCTTextManager.h Add support for multiline TextInput via UITextView 2015-04-29 01:33:58 -08:00
RCTTextManager.m iOS: Enable views to be nested within <Text> 2016-05-31 10:28:25 -07:00
RCTTextView.h Updated AppState module to use new emitter system 2016-05-23 09:13:37 -07:00
RCTTextView.m Explicitly set default background color in RCTTextView 2016-06-06 12:58:37 -07:00
RCTTextViewManager.h Add support for multiline TextInput via UITextView 2015-04-29 01:33:58 -08:00
RCTTextViewManager.m Fixed multiline textinput onChange event 2016-05-25 06:13:25 -07:00
Text.js explicit type args in react-native-github 2016-05-24 18:28:26 -07:00
TextStylePropTypes.js Fallback for textAlign: justify 2016-04-24 11:29:23 -07:00
TextUpdateTest.js Fix up this pattern var React = require('react-native'); 2016-04-08 20:37:22 -07:00