Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2/2 TextInput accessibilityErrorMessage (VoiceOver, iOS) #35908

Closed

Conversation

fabOnReact
Copy link
Contributor

@fabOnReact fabOnReact commented Jan 20, 2023

Summary

Previous PR #33468.

iOS: The accessibilityErrorMessage is stored in the accessibilityValue of the TextInput and it is announced with UIAccessibilityPostNotification.
The acceptable parameters of accessibilityErrorMessage is a string. Setting accessibilityInvalid to true activates the error message. Setting accessibilityInvalid to false removes the error message.

Fixes #30848 - Adding an accessibilityErrorMessage prop to the TextInput Component:
iOS: iOS has no standard pattern for the presentation of error states on text inputs. The message is saved in the accessibilityValue of the field.

Fixes #30859 - Detecting changes in the Error state (text inputs)
Fabric - iOS - State Updates are triggered with RCTTextInputComponentView#updateProps.
When the accessibilityErrorMessage or the text value of the TextInput changes, the accessibilityValue is set to that value and a VoiceOver announcement is triggered with UIAccessibilityPostNotification. Error announcements are triggered onChangeText with setAttributeString.
Paper - iOS - To avoid duplicate screenreader announcement of the accessibilityError when typing, a screenreader announcement of the next typed character is triggered with RCTBaseTextInputView#setAttributedText if the error message is removed when accessibilityInvalid is true.

Related Links (iOS):

Android Functionalities are included in separate PR #33468
Documentation PR facebook/react-native-website#3010
Related PR facebook/react-native-deprecated-modules#18

Changelog

[iOS] [Added] - 2/2 [iOS] TextInput prop accessibilityErrorMessage for VoiceOver

Test Plan

iOS Jan 20 2023 #35908 (comment) #35908 (comment)

PR Branch - iOS
73. Announcing error onChangeText and screenreader focus (Fabric) (link)
74. iOS - The screenreader announces the TextInput value after the errorMessage is cleared (link)
76. iOS - announce lastChar (not entire text) onChangeText and avoid multiple announcements (Fabric) (link)
77. iOS - announces or does not announce the accessibilityError through Button onPress (not onChangeText) (Fabric) (link)
78. iOS - the error is announced with accessibilityInvalid true and does not clear after typing text (onChangeText) (Fabric) (link)

Main Branch
70. iOS - Paper renderer does not update the accessibilityValue (link)
75. iOS - Exception thrown while executing UI block: - [RCTTextView setOnAccessibiltyAction:]: unrecognized selector sent to instance (Paper) (main branch) (link)
79. iOS - Exception thrown while executing UI block: - RCTUITextView setAccessibilityErrorMessage:]: unrecognized selector sent to instance (iOS - Paper on main branch) (link)

@facebook-github-bot facebook-github-bot added the CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. label Jan 20, 2023
@fabOnReact fabOnReact changed the title 2/2 [iOS] TextInput prop accessibilityErrorMessage for TalkBack 2/2 [iOS] TextInput prop accessibilityErrorMessage for VoiceOver Jan 20, 2023
@react-native-bot react-native-bot added Platform: iOS iOS applications. Type: Enhancement A new feature or enhancement of an existing feature. labels Jan 20, 2023
@analysis-bot
Copy link

analysis-bot commented Jan 20, 2023

Platform Engine Arch Size (bytes) Diff
android hermes arm64-v8a 8,476,838 +6
android hermes armeabi-v7a 7,798,877 +9
android hermes x86 8,952,754 +12
android hermes x86_64 8,810,272 -1
android jsc arm64-v8a 9,108,025 +20
android jsc armeabi-v7a 8,304,745 +8
android jsc x86 9,158,814 +14
android jsc x86_64 9,418,108 +6

Base commit: 3997fc1
Branch: main

fabOnReact added a commit to fabOnReact/react-native that referenced this pull request Jan 20, 2023
@fabOnReact
Copy link
Contributor Author

ios.announcing.error.mp4

@fabOnReact fabOnReact force-pushed the text-input-errors-improvements branch from d0d593f to 2d0d4d4 Compare January 20, 2023 13:35
@fabOnReact fabOnReact changed the title 2/2 [iOS] TextInput prop accessibilityErrorMessage for VoiceOver 2/2 [iOS] VoiceOver prop accessibilityErrorMessage (TextInput) Jan 20, 2023
@fabOnReact
Copy link
Contributor Author

iOS.refactor.mp4

@fabOnReact fabOnReact changed the title 2/2 [iOS] VoiceOver prop accessibilityErrorMessage (TextInput) 2/2 TextInput accessibilityErrorMessage (VoiceOver, iOS) Jan 24, 2023
@fabOnReact fabOnReact marked this pull request as ready for review February 9, 2023 12:42
facebook-github-bot pushed a commit that referenced this pull request Mar 1, 2023
Summary:
**Android**: The functionality consists of calling the [AccessibilityNodeInfo#setError][10] and [#setContentInvalid][13] method to display the error message in the TextInput.

**Fixes [https://github.com/facebook/react-native/issues/30848][51] - Adding an accessibilityErrorMessage prop to the TextInput Component**:
**Android**: The prop accessibilityErrorMessage triggers the AccessibilityNodeInfo method [setError][10] which automatically sets the correct properties on the AccessibilityNodeInfo that will inform screen readers of this state. The method calls setContentInvalid(true) and setError(youErrorString) on the AccessibilityNodeInfo.

**Fixes [https://github.com/facebook/react-native/issues/30859][52] -  Detecting changes in the Error state (text inputs)**
**Fabric - Android** - Adding accessibilityErrorMessage to field AndroidTextInputState.
ReactTextInputManager and ReactEditText receive state updates both from [Javascript][32] and [cpp (fabric)][34].
- accessibilityErrorMessage is added to the fabric AndroidTextInputState field
- The updates are received in the ReactAndroid API with method updateState from ReactTextInputManager
- After updating the TextInput text with onChangeText, the update of the accessibilityErrorMessage is triggered with method maybeSetAccessibilityError which triggers [setError][10].

More info:
- An explanation of [state updates between fabric and ReactAndroid for the TextInput component][34]
- [ReactNative renderer state updates][35]

**Paper - Android** - Adding accessibilityErrorMessage to ReactTextInputShadowNode to trigger updates in Paper renderer when accessibilityErrorMessage is changed within the onChange callback.

Related Links (Android):
- [In this diff I'm shipping and deleting mapBufferSerialization for Text measurement][101]
- [This diff implement and integrates Mapbuffer into Fabric text measure system][39]
- [Refactor ViewPropsMapBuffer -> general MapBuffer props mechanism][100]
- [TextInput: support modifying TextInputs with multiple Fragments (Cxx side)][24]
- [TextInput: keep C++ state in-sync with updated AttributedStrings in Java][23]
- [AccessibilityNodeInfo#setError][11]
- [Explanation on how TextInput calls SET_TEXT_AND_SELECTION in Java API][32]
- [Fabric: convertRawProp was extended to accept an optional default value][27]
- [understanding onChangeText callback][31]
- [Editable method replace()][12]
- [Change of error state from onChangeText show/hides a TextInput error][30]
- [AndroidTextInput: support using commands instead of setNativeProps (native change)][25]
- [TextInput: support editing completely empty TextInputs][26]
- [[Android] Fix letters duplication when using autoCapitalize https://github.com/facebook/react-native/issues/29070][40]
- [Support optional types for C++ TurboModules][28]
- [discussion on using announceForAccessibility in ReactEditText][36]
- [ fix annoucement delayed to next character][61]
- [Announce accessibility state changes happening in the background][29]
- [Refactor MountingManager into MountingManager + SurfaceMountingManager][37]

iOS Functionalities are included in separate PR #35908
Documentation PR facebook/react-native-website#3010

Next PR [2/2 TextInput accessibilityErrorMessage (VoiceOver, iOS) https://github.com/facebook/react-native/issues/35908](https://github.com/facebook/react-native/pull/35908)
Related facebook/react-native-deprecated-modules#18

## Changelog

[Android] [Added] - Adding TextInput prop accessibilityErrorMessage to announce with TalkBack screenreaders

Pull Request resolved: #33468

Test Plan:
**Android - 20 Jan 2023**
#33468 (comment)

**iOS - 20 Jan 2023**
#33468 (comment)

<details><summary>CLICK TO OPEN OLD VIDEO TEST CASES</summary>
<p>

**PR Branch - Android and iOS 24th June**
[88]: Android - accessibilityValue announces correctly with/out errorMessage set with onChangeText or with outside event (Fabric) ([link][88])

**PR Branch - Android**
[1]. Test Cases of the functionality (Fabric) ([link][1])
[2]. Test Cases of the functionality (Paper) ([link][2])

**Main Branch**
[6]. Android - Runtime Error in main branch when passing value of 1 to TextInput  placeholder prop ([link][6])

**Issues Solved**
[7]. TalkBack error does not clear error on the next typed character when using onChangeText ([link][7])
**Other Tests**
[8]. Setting the TextInput errorMessage state with setTextAndSelection Java API from JavaScript ([link][8])
[9]. Setting the TextInput errorMessage state from fabric TextInput internal state to Java ReactTextUpdate API ([link][9])

</p>
</details>

[1]: fabOnReact/react-native-notes#12 (comment) "Test Cases of the functionality (Android - Fabric)"
[2]: fabOnReact/react-native-notes#12 (comment) "Test Cases of the functionality (Android - Paper)"
[3]: fabOnReact/react-native-notes#12 (comment) "Test Cases of the functionality (iOS - Fabric)"
[6]: fabOnReact/react-native-notes#12 (comment) "Runtime Error in main branch when passing value of 1 to TextInput  placeholder prop"
[7]: fabOnReact/react-native-notes#12 (comment) "TalkBack error announcement done on next typed character with onChangeText"
[8]: fabOnReact/react-native-notes#12 (comment) "setting the TextInput errorMessage state with setTextAndSelection Java API from JavaScript"
[9]: fabOnReact/react-native-notes#12 (comment) "Setting the TextInput errorMessage state from fabric TextInput internal state to Java ReactTextUpdate API"

[10]: https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#setError(java.lang.CharSequence) "AOSP setError"
[11]: https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#setError(java.lang.CharSequence) "AccessibilityNodeInfo#setError"
[12]: https://github.com/aosp-mirror/platform_frameworks_base/blob/1ac46f932ef88a8f96d652580d8105e361ffc842/core/java/android/text/Editable.java#L28-L52 "Editable method replace"
[13]: https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#setContentInvalid(boolean) "setContentInvalid"

[20]: 60b6c9b "draft implementation of android_errorMessage "
[21]: 012d92d "add errorMessage to ReactTextUpdate and maybeSetAccessibilityError"
[22]: fabOnReact@cad239b "rename android_errorMessage to errorMessageAndroid"
[23]: fabOnReact@0bae474 "TextInput: keep C++ state in-sync with updated AttributedStrings in Java"
[24]: fabOnReact@0556e86 "TextInput: support modifying TextInputs with multiple Fragments (Cxx side)"
[25]: fabOnReact@7ab5eb4 "AndroidTextInput: support using commands instead of setNativeProps (native change)"
[26]: fabOnReact@b9491b7 "TextInput: support editing completely empty TextInputs"
[27]: fabOnReact@7f1ed68 "Fabric: convertRawProp was extended to accept an optional default value"
[28]: 6e0fa5f "Support optional types for C++ TurboModules"
[29]: fabOnReact@baa66f6 "Announce accessibility state changes happening in the background"

[30]: fabOnReact/react-native-notes#12 (comment) "Change of error state from onChangeText show/hides a TextInput error"
[31]: fabOnReact/react-native-notes#12 (comment) "understanding onChangeText callback"
[32]: #29063 (comment) "Explanation on how TextInput calls SET_TEXT_AND_SELECTION in Java API"
[33]: #33468 (comment) "Explanation of TextInput state management with fabric C++ and JAVA API"
[34]: #33468 (comment) "state updates between fabric and ReactAndroid for the TextInput component"
[35]: https://reactnative.dev/architecture/render-pipeline#react-native-renderer-state-updates "ReactNative renderer state updates"
[35]: fabOnReact/react-native-notes#12 (comment) "Analysis on how AndroidTextInputState.cpp sends updates to ReactTextInputManager"
[36]: #33468 (comment) "discussion on using announceForAccessibility in ReactEditText"
[37]: fabOnReact@29eb632 "Refactor MountingManager into MountingManager + SurfaceMountingManager"
[38]: fabOnReact@733f228 "Diff C++ props for Android consumption"
[39]: fabOnReact@91b3f5d "This diff implement and integrates Mapbuffer into Fabric text measure system"

[40]: #29070 "[Android] Fix letters duplication when using autoCapitalize #29070"

[50]: fabOnReact/react-native-notes#12  "Notes from work on iOS/Android: Text input error for screenreaders #12"
[51]: #30848 "iOS/Android: Text input error for screenreaders #30848"
[52]: #30859 "Android: Error state change (text inputs) #30859"

[61]: eb33c93 "fix annoucement delayed to next character"

[70]: fabOnReact/react-native-notes#12 (comment) "iOS - Paper renderer does not update the accessibilityValue"
[71]: fabOnReact/react-native-notes#12 (comment) "Test Cases of the functionality (Fabric) after removing changes to .cpp libs"
[72]: fabOnReact/react-native-notes#12 (comment) "Test Cases of the functionality (Paper) after removing changes to .cpp libs"
[73]: fabOnReact/react-native-notes#12 (comment) "iOS - announcing error onChangeText and screenreader focus"
[74]: fabOnReact/react-native-notes#12 (comment) "iOS - The screenreader announces the TextInput value after the errorMessage is cleared"
[75]: fabOnReact/react-native-notes#12 (comment) "iOS - Exception thrown while executing UI block: - [RCTTextView setOnAccessibiltyAction:]: unrecognized selector sent to instance (Paper) (main branch)"
[76]: #30859 (comment) "iOS - announce lastChar (not entire text) onChangeText and avoid multiple announcements (Fabric)"
[77]: #30859 (comment) "iOS - announces or does not announce the accessibilityError through Button onPress (not onChangeText) (Fabric)"
[78]: #30859 (comment) "iOS - the error is announced with accessibilityInvalid true and does not clear after typing text (onChangeText) (Fabric)"
[79]: #30848 (comment) "iOS - Exception thrown while executing UI block: - RCTUITextView setAccessibilityErrorMessage:]: unrecognized selector sent to instance (iOS - Paper on main branch)"

[80]: fabOnReact@e13b9c6 "RCTTextField was spliited into two classes"
[81]: fabOnReact@ee9697e "Introducing RCTBackedTextInputDelegate"
[82]: fabOnReact@2dd2529 "Add option to hide context menu for TextInput"
[83]: https://github.com/fabriziobertoglio1987/react-native/blob/343eea1e3150cf54d6f7727cd01d13eb7247c7f7/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentAccessibilityProvider.mm#L48-L72 "RCTParagraphComponentAccessibilityProvider accessibilityElements"
[84]: https://github.com/fabriziobertoglio1987/react-native/blob/c8790a114f6f21774c43f0e9b9210e7b35d1c243/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm#L613 "RCTTextInputComponentView method _setAttributedString"
[85]: https://github.com/fabriziobertoglio1987/react-native/blob/c8790a114f6f21774c43f0e9b9210e7b35d1c243/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm#L146 "RCTTextInputComponentView method updateProps"
[86]: https://github.com/fabriziobertoglio1987/react-native/blob/c8790a114f6f21774c43f0e9b9210e7b35d1c243/Libraries/Text/TextInput/RCTBaseTextInputView.m#L150 "RCTBaseTextInputView setAttributedText"
[87]: #30859 (comment) "iOS - accessibilityValue announces correctly with/out errorMessage set with onChangeText or with outside event"
[88]: #30859 (comment) "Android - accessibilityValue announces correctly with/out errorMessage set with onChangeText or with outside event"
[89]: #30859 (comment) "iOS - accessibilityValue announces correctly with/out errorMessage set with onChangeText or with outside event (Fabric)"

[100]: fabOnReact@110b191 "Refactor ViewPropsMapBuffer -> general MapBuffer props mechanism"
[101]: fabOnReact@22b6e1c "In this diff I'm shipping and deleting mapBufferSerialization for Text measurement"

Reviewed By: blavalla

Differential Revision: D38410635

Pulled By: lunaleaps

fbshipit-source-id: cd80e9a1be8f5ca017c979d7907974cf72ca4777
OlimpiaZurek pushed a commit to OlimpiaZurek/react-native that referenced this pull request May 22, 2023
…#33468)

Summary:
**Android**: The functionality consists of calling the [AccessibilityNodeInfo#setError][10] and [#setContentInvalid][13] method to display the error message in the TextInput.

**Fixes [https://github.com/facebook/react-native/issues/30848][51] - Adding an accessibilityErrorMessage prop to the TextInput Component**:
**Android**: The prop accessibilityErrorMessage triggers the AccessibilityNodeInfo method [setError][10] which automatically sets the correct properties on the AccessibilityNodeInfo that will inform screen readers of this state. The method calls setContentInvalid(true) and setError(youErrorString) on the AccessibilityNodeInfo.

**Fixes [https://github.com/facebook/react-native/issues/30859][52] -  Detecting changes in the Error state (text inputs)**
**Fabric - Android** - Adding accessibilityErrorMessage to field AndroidTextInputState.
ReactTextInputManager and ReactEditText receive state updates both from [Javascript][32] and [cpp (fabric)][34].
- accessibilityErrorMessage is added to the fabric AndroidTextInputState field
- The updates are received in the ReactAndroid API with method updateState from ReactTextInputManager
- After updating the TextInput text with onChangeText, the update of the accessibilityErrorMessage is triggered with method maybeSetAccessibilityError which triggers [setError][10].

More info:
- An explanation of [state updates between fabric and ReactAndroid for the TextInput component][34]
- [ReactNative renderer state updates][35]

**Paper - Android** - Adding accessibilityErrorMessage to ReactTextInputShadowNode to trigger updates in Paper renderer when accessibilityErrorMessage is changed within the onChange callback.

Related Links (Android):
- [In this diff I'm shipping and deleting mapBufferSerialization for Text measurement][101]
- [This diff implement and integrates Mapbuffer into Fabric text measure system][39]
- [Refactor ViewPropsMapBuffer -> general MapBuffer props mechanism][100]
- [TextInput: support modifying TextInputs with multiple Fragments (Cxx side)][24]
- [TextInput: keep C++ state in-sync with updated AttributedStrings in Java][23]
- [AccessibilityNodeInfo#setError][11]
- [Explanation on how TextInput calls SET_TEXT_AND_SELECTION in Java API][32]
- [Fabric: convertRawProp was extended to accept an optional default value][27]
- [understanding onChangeText callback][31]
- [Editable method replace()][12]
- [Change of error state from onChangeText show/hides a TextInput error][30]
- [AndroidTextInput: support using commands instead of setNativeProps (native change)][25]
- [TextInput: support editing completely empty TextInputs][26]
- [[Android] Fix letters duplication when using autoCapitalize https://github.com/facebook/react-native/issues/29070][40]
- [Support optional types for C++ TurboModules][28]
- [discussion on using announceForAccessibility in ReactEditText][36]
- [ fix annoucement delayed to next character][61]
- [Announce accessibility state changes happening in the background][29]
- [Refactor MountingManager into MountingManager + SurfaceMountingManager][37]

iOS Functionalities are included in separate PR facebook#35908
Documentation PR facebook/react-native-website#3010

Next PR [2/2 TextInput accessibilityErrorMessage (VoiceOver, iOS) https://github.com/facebook/react-native/issues/35908](https://github.com/facebook/react-native/pull/35908)
Related facebook/react-native-deprecated-modules#18

## Changelog

[Android] [Added] - Adding TextInput prop accessibilityErrorMessage to announce with TalkBack screenreaders

Pull Request resolved: facebook#33468

Test Plan:
**Android - 20 Jan 2023**
facebook#33468 (comment)

**iOS - 20 Jan 2023**
facebook#33468 (comment)

<details><summary>CLICK TO OPEN OLD VIDEO TEST CASES</summary>
<p>

**PR Branch - Android and iOS 24th June**
[88]: Android - accessibilityValue announces correctly with/out errorMessage set with onChangeText or with outside event (Fabric) ([link][88])

**PR Branch - Android**
[1]. Test Cases of the functionality (Fabric) ([link][1])
[2]. Test Cases of the functionality (Paper) ([link][2])

**Main Branch**
[6]. Android - Runtime Error in main branch when passing value of 1 to TextInput  placeholder prop ([link][6])

**Issues Solved**
[7]. TalkBack error does not clear error on the next typed character when using onChangeText ([link][7])
**Other Tests**
[8]. Setting the TextInput errorMessage state with setTextAndSelection Java API from JavaScript ([link][8])
[9]. Setting the TextInput errorMessage state from fabric TextInput internal state to Java ReactTextUpdate API ([link][9])

</p>
</details>

[1]: fabOnReact/react-native-notes#12 (comment) "Test Cases of the functionality (Android - Fabric)"
[2]: fabOnReact/react-native-notes#12 (comment) "Test Cases of the functionality (Android - Paper)"
[3]: fabOnReact/react-native-notes#12 (comment) "Test Cases of the functionality (iOS - Fabric)"
[6]: fabOnReact/react-native-notes#12 (comment) "Runtime Error in main branch when passing value of 1 to TextInput  placeholder prop"
[7]: fabOnReact/react-native-notes#12 (comment) "TalkBack error announcement done on next typed character with onChangeText"
[8]: fabOnReact/react-native-notes#12 (comment) "setting the TextInput errorMessage state with setTextAndSelection Java API from JavaScript"
[9]: fabOnReact/react-native-notes#12 (comment) "Setting the TextInput errorMessage state from fabric TextInput internal state to Java ReactTextUpdate API"

[10]: https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#setError(java.lang.CharSequence) "AOSP setError"
[11]: https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#setError(java.lang.CharSequence) "AccessibilityNodeInfo#setError"
[12]: https://github.com/aosp-mirror/platform_frameworks_base/blob/1ac46f932ef88a8f96d652580d8105e361ffc842/core/java/android/text/Editable.java#L28-L52 "Editable method replace"
[13]: https://developer.android.com/reference/android/view/accessibility/AccessibilityNodeInfo#setContentInvalid(boolean) "setContentInvalid"

[20]: facebook@60b6c9b "draft implementation of android_errorMessage "
[21]: facebook@012d92d "add errorMessage to ReactTextUpdate and maybeSetAccessibilityError"
[22]: fabOnReact@cad239b "rename android_errorMessage to errorMessageAndroid"
[23]: fabOnReact@0bae474 "TextInput: keep C++ state in-sync with updated AttributedStrings in Java"
[24]: fabOnReact@0556e86 "TextInput: support modifying TextInputs with multiple Fragments (Cxx side)"
[25]: fabOnReact@7ab5eb4 "AndroidTextInput: support using commands instead of setNativeProps (native change)"
[26]: fabOnReact@b9491b7 "TextInput: support editing completely empty TextInputs"
[27]: fabOnReact@7f1ed68 "Fabric: convertRawProp was extended to accept an optional default value"
[28]: facebook@6e0fa5f "Support optional types for C++ TurboModules"
[29]: fabOnReact@baa66f6 "Announce accessibility state changes happening in the background"

[30]: fabOnReact/react-native-notes#12 (comment) "Change of error state from onChangeText show/hides a TextInput error"
[31]: fabOnReact/react-native-notes#12 (comment) "understanding onChangeText callback"
[32]: facebook#29063 (comment) "Explanation on how TextInput calls SET_TEXT_AND_SELECTION in Java API"
[33]: facebook#33468 (comment) "Explanation of TextInput state management with fabric C++ and JAVA API"
[34]: facebook#33468 (comment) "state updates between fabric and ReactAndroid for the TextInput component"
[35]: https://reactnative.dev/architecture/render-pipeline#react-native-renderer-state-updates "ReactNative renderer state updates"
[35]: fabOnReact/react-native-notes#12 (comment) "Analysis on how AndroidTextInputState.cpp sends updates to ReactTextInputManager"
[36]: facebook#33468 (comment) "discussion on using announceForAccessibility in ReactEditText"
[37]: fabOnReact@29eb632 "Refactor MountingManager into MountingManager + SurfaceMountingManager"
[38]: fabOnReact@733f228 "Diff C++ props for Android consumption"
[39]: fabOnReact@91b3f5d "This diff implement and integrates Mapbuffer into Fabric text measure system"

[40]: facebook#29070 "[Android] Fix letters duplication when using autoCapitalize facebook#29070"

[50]: fabOnReact/react-native-notes#12  "Notes from work on iOS/Android: Text input error for screenreaders facebook#12"
[51]: facebook#30848 "iOS/Android: Text input error for screenreaders facebook#30848"
[52]: facebook#30859 "Android: Error state change (text inputs) facebook#30859"

[61]: facebook@eb33c93 "fix annoucement delayed to next character"

[70]: fabOnReact/react-native-notes#12 (comment) "iOS - Paper renderer does not update the accessibilityValue"
[71]: fabOnReact/react-native-notes#12 (comment) "Test Cases of the functionality (Fabric) after removing changes to .cpp libs"
[72]: fabOnReact/react-native-notes#12 (comment) "Test Cases of the functionality (Paper) after removing changes to .cpp libs"
[73]: fabOnReact/react-native-notes#12 (comment) "iOS - announcing error onChangeText and screenreader focus"
[74]: fabOnReact/react-native-notes#12 (comment) "iOS - The screenreader announces the TextInput value after the errorMessage is cleared"
[75]: fabOnReact/react-native-notes#12 (comment) "iOS - Exception thrown while executing UI block: - [RCTTextView setOnAccessibiltyAction:]: unrecognized selector sent to instance (Paper) (main branch)"
[76]: facebook#30859 (comment) "iOS - announce lastChar (not entire text) onChangeText and avoid multiple announcements (Fabric)"
[77]: facebook#30859 (comment) "iOS - announces or does not announce the accessibilityError through Button onPress (not onChangeText) (Fabric)"
[78]: facebook#30859 (comment) "iOS - the error is announced with accessibilityInvalid true and does not clear after typing text (onChangeText) (Fabric)"
[79]: facebook#30848 (comment) "iOS - Exception thrown while executing UI block: - RCTUITextView setAccessibilityErrorMessage:]: unrecognized selector sent to instance (iOS - Paper on main branch)"

[80]: fabOnReact@e13b9c6 "RCTTextField was spliited into two classes"
[81]: fabOnReact@ee9697e "Introducing RCTBackedTextInputDelegate"
[82]: fabOnReact@2dd2529 "Add option to hide context menu for TextInput"
[83]: https://github.com/fabriziobertoglio1987/react-native/blob/343eea1e3150cf54d6f7727cd01d13eb7247c7f7/React/Fabric/Mounting/ComponentViews/Text/RCTParagraphComponentAccessibilityProvider.mm#L48-L72 "RCTParagraphComponentAccessibilityProvider accessibilityElements"
[84]: https://github.com/fabriziobertoglio1987/react-native/blob/c8790a114f6f21774c43f0e9b9210e7b35d1c243/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm#L613 "RCTTextInputComponentView method _setAttributedString"
[85]: https://github.com/fabriziobertoglio1987/react-native/blob/c8790a114f6f21774c43f0e9b9210e7b35d1c243/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm#L146 "RCTTextInputComponentView method updateProps"
[86]: https://github.com/fabriziobertoglio1987/react-native/blob/c8790a114f6f21774c43f0e9b9210e7b35d1c243/Libraries/Text/TextInput/RCTBaseTextInputView.m#L150 "RCTBaseTextInputView setAttributedText"
[87]: facebook#30859 (comment) "iOS - accessibilityValue announces correctly with/out errorMessage set with onChangeText or with outside event"
[88]: facebook#30859 (comment) "Android - accessibilityValue announces correctly with/out errorMessage set with onChangeText or with outside event"
[89]: facebook#30859 (comment) "iOS - accessibilityValue announces correctly with/out errorMessage set with onChangeText or with outside event (Fabric)"

[100]: fabOnReact@110b191 "Refactor ViewPropsMapBuffer -> general MapBuffer props mechanism"
[101]: fabOnReact@22b6e1c "In this diff I'm shipping and deleting mapBufferSerialization for Text measurement"

Reviewed By: blavalla

Differential Revision: D38410635

Pulled By: lunaleaps

fbshipit-source-id: cd80e9a1be8f5ca017c979d7907974cf72ca4777
@github-actions
Copy link

This PR is stale because it has been open 180 days with no activity. Remove stale label or comment or this will be closed in 7 days.

@github-actions github-actions bot added the Stale There has been a lack of activity on this issue and it may be closed soon. label Aug 31, 2023
@github-actions
Copy link

github-actions bot commented Sep 7, 2023

This PR was closed because it has been stalled for 7 days with no activity.

@github-actions github-actions bot closed this Sep 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CLA Signed This label is managed by the Facebook bot. Authors need to sign the CLA before a PR can be reviewed. Platform: iOS iOS applications. Stale There has been a lack of activity on this issue and it may be closed soon. Type: Enhancement A new feature or enhancement of an existing feature.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Android: Error state change (text inputs) iOS/Android: Text input error for screenreaders
4 participants