Skip to content

Commit eb33c93

Browse files
committed
fix annoucement delayed to next character
Issue documented in comment #33468 (comment) calling requestSendAccessibilityEvent fixes the issue the logic was taken from TextView#setError which calls notifyViewAccessibilityStateChangedIfNeeded https://github.com/aosp-mirror/platform_frameworks_base/blob/1ac46f932ef88a8f96d652580d8105e361ffc842/core/java/android/widget/TextView.java#L7284 after some testing, calling the requestSendAccessibilityEvent on the parent view fixed the issue ``` mParent.requestSendAccessibilityEvent(this, event) ``` https://github.com/aosp-mirror/platform_frameworks_base/blob/1ac46f932ef88a8f96d652580d8105e361ffc842/core/java/android/view/View.java#L13710
1 parent 994089c commit eb33c93

File tree

1 file changed

+13
-3
lines changed

1 file changed

+13
-3
lines changed

ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import android.view.KeyEvent;
3131
import android.view.MotionEvent;
3232
import android.view.View;
33+
import android.view.accessibility.AccessibilityEvent;
3334
import android.view.accessibility.AccessibilityNodeInfo;
3435
import android.view.inputmethod.EditorInfo;
3536
import android.view.inputmethod.InputConnection;
@@ -171,6 +172,14 @@ public void onInitializeAccessibilityNodeInfo(
171172
}
172173
}
173174

175+
@Override
176+
public void onInitializeAccessibilityEvent(View host, AccessibilityEvent event) {
177+
super.onInitializeAccessibilityEvent(host, event);
178+
if (((View) host).getParent() != null) {
179+
((View) host).getParent().requestSendAccessibilityEvent(host, event);
180+
}
181+
}
182+
174183
@Override
175184
public boolean performAccessibilityAction(View host, int action, Bundle args) {
176185
if (action == AccessibilityNodeInfo.ACTION_CLICK) {
@@ -527,11 +536,12 @@ public int incrementAndGetEventCounter() {
527536
*/
528537
public void maybeSetAccessibilityError(
529538
int eventCounter, @Nullable String accessibilityErrorMessage) {
530-
if (!canUpdateWithEventCount(eventCounter) || accessibilityErrorMessage == null) {
539+
if (!canUpdateWithEventCount(eventCounter)) {
531540
return;
532541
}
533-
announceForAccessibility("Invalid input " + accessibilityErrorMessage);
534-
setTag(R.id.accessibility_error, null);
542+
543+
setTag(R.id.accessibility_error, accessibilityErrorMessage);
544+
sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
535545
}
536546

537547
public void maybeSetTextFromJS(ReactTextUpdate reactTextUpdate) {

0 commit comments

Comments
 (0)