Skip to content

Commit ef5cec4

Browse files
committed
Text highlighting on iOS
Summary: This diff implements highlighting of tapped text subranges for the iOS `<Text>` component, styled to match how iOS webkit views highlight links (translucent grey overlay with rounded corners). Highlighting is enabled by default for any `<Text>` component which has an onPress handler. To disable the highlight, add `suppressHighlighting={true}` to the component props.
1 parent 7c87952 commit ef5cec4

16 files changed

Lines changed: 66 additions & 1 deletion

File tree

Examples/UIExplorer/TextExample.ios.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,7 +269,7 @@ exports.examples = [
269269
right right right right right right right right right right right right right
270270
</Text>
271271
<Text style={{textAlign: 'justify'}}>
272-
justify: this text component's contents are laid out with "textAlign: justify"
272+
justify: this text component{"'"}s contents are laid out with "textAlign: justify"
273273
and as you can see all of the lines except the last one span the
274274
available width of the parent container.
275275
</Text>
@@ -369,6 +369,15 @@ exports.examples = [
369369
</View>
370370
);
371371
},
372+
}, {
373+
title: 'Text highlighting (tap the link to see highlight)',
374+
render: function() {
375+
return (
376+
<View>
377+
<Text>Lorem ipsum dolor sit amet, <Text suppressHighlighting={false} style={{backgroundColor: 'white', textDecorationLine: 'underline', color: 'blue'}} onPress={() => null}>consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud</Text> exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</Text>
378+
</View>
379+
);
380+
},
372381
}];
373382

374383
var styles = StyleSheet.create({

Examples/UIExplorer/UIExplorer.xcodeproj/project.pbxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1037,6 +1037,7 @@
10371037
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
10381038
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
10391039
GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = YES;
1040+
GCC_WARN_SHADOW = YES;
10401041
GCC_WARN_STRICT_SELECTOR_MATCH = YES;
10411042
GCC_WARN_UNDECLARED_SELECTOR = YES;
10421043
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
@@ -1092,6 +1093,7 @@
10921093
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
10931094
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
10941095
GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR = YES;
1096+
GCC_WARN_SHADOW = YES;
10951097
GCC_WARN_STRICT_SELECTOR_MATCH = YES;
10961098
GCC_WARN_UNDECLARED_SELECTOR = YES;
10971099
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;

Libraries/ActionSheetIOS/RCTActionSheet.xcodeproj/project.pbxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@
151151
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
152152
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
153153
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
154+
GCC_WARN_SHADOW = YES;
154155
GCC_WARN_UNDECLARED_SELECTOR = YES;
155156
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
156157
GCC_WARN_UNUSED_FUNCTION = YES;
@@ -190,6 +191,7 @@
190191
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
191192
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
192193
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
194+
GCC_WARN_SHADOW = YES;
193195
GCC_WARN_UNDECLARED_SELECTOR = YES;
194196
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
195197
GCC_WARN_UNUSED_FUNCTION = YES;

Libraries/AdSupport/RCTAdSupport.xcodeproj/project.pbxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@
151151
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
152152
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
153153
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
154+
GCC_WARN_SHADOW = YES;
154155
GCC_WARN_UNDECLARED_SELECTOR = YES;
155156
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
156157
GCC_WARN_UNUSED_FUNCTION = YES;
@@ -195,6 +196,7 @@
195196
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
196197
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
197198
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
199+
GCC_WARN_SHADOW = YES;
198200
GCC_WARN_UNDECLARED_SELECTOR = YES;
199201
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
200202
GCC_WARN_UNUSED_FUNCTION = YES;

Libraries/Geolocation/RCTGeolocation.xcodeproj/project.pbxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@
151151
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
152152
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
153153
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
154+
GCC_WARN_SHADOW = YES;
154155
GCC_WARN_UNDECLARED_SELECTOR = YES;
155156
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
156157
GCC_WARN_UNUSED_FUNCTION = YES;
@@ -190,6 +191,7 @@
190191
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
191192
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
192193
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
194+
GCC_WARN_SHADOW = YES;
193195
GCC_WARN_UNDECLARED_SELECTOR = YES;
194196
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
195197
GCC_WARN_UNUSED_FUNCTION = YES;

Libraries/Image/RCTImage.xcodeproj/project.pbxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,7 @@
211211
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
212212
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
213213
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
214+
GCC_WARN_SHADOW = YES;
214215
GCC_WARN_UNDECLARED_SELECTOR = YES;
215216
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
216217
GCC_WARN_UNUSED_FUNCTION = YES;
@@ -250,6 +251,7 @@
250251
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
251252
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
252253
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
254+
GCC_WARN_SHADOW = YES;
253255
GCC_WARN_UNDECLARED_SELECTOR = YES;
254256
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
255257
GCC_WARN_UNUSED_FUNCTION = YES;

Libraries/LinkingIOS/RCTLinking.xcodeproj/project.pbxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@
148148
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
149149
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
150150
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
151+
GCC_WARN_SHADOW = YES;
151152
GCC_WARN_UNDECLARED_SELECTOR = YES;
152153
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
153154
GCC_WARN_UNUSED_FUNCTION = YES;
@@ -182,6 +183,7 @@
182183
GCC_C_LANGUAGE_STANDARD = gnu99;
183184
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
184185
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
186+
GCC_WARN_SHADOW = YES;
185187
GCC_WARN_UNDECLARED_SELECTOR = YES;
186188
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
187189
GCC_WARN_UNUSED_FUNCTION = YES;

Libraries/Network/RCTNetwork.xcodeproj/project.pbxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@
169169
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
170170
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
171171
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
172+
GCC_WARN_SHADOW = YES;
172173
GCC_WARN_UNDECLARED_SELECTOR = YES;
173174
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
174175
GCC_WARN_UNUSED_FUNCTION = YES;
@@ -208,6 +209,7 @@
208209
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
209210
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
210211
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
212+
GCC_WARN_SHADOW = YES;
211213
GCC_WARN_UNDECLARED_SELECTOR = YES;
212214
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
213215
GCC_WARN_UNUSED_FUNCTION = YES;

Libraries/PushNotificationIOS/RCTPushNotification.xcodeproj/project.pbxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@
148148
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
149149
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
150150
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
151+
GCC_WARN_SHADOW = YES;
151152
GCC_WARN_UNDECLARED_SELECTOR = YES;
152153
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
153154
GCC_WARN_UNUSED_FUNCTION = YES;
@@ -188,6 +189,7 @@
188189
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
189190
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
190191
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
192+
GCC_WARN_SHADOW = YES;
191193
GCC_WARN_UNDECLARED_SELECTOR = YES;
192194
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
193195
GCC_WARN_UNUSED_FUNCTION = YES;

Libraries/RCTTest/RCTTest.xcodeproj/project.pbxproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@
189189
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
190190
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
191191
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
192+
GCC_WARN_SHADOW = YES;
192193
GCC_WARN_UNDECLARED_SELECTOR = YES;
193194
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
194195
GCC_WARN_UNUSED_FUNCTION = YES;
@@ -233,6 +234,7 @@
233234
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
234235
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
235236
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
237+
GCC_WARN_SHADOW = YES;
236238
GCC_WARN_UNDECLARED_SELECTOR = YES;
237239
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
238240
GCC_WARN_UNUSED_FUNCTION = YES;

0 commit comments

Comments
 (0)