Skip to content

iOS VoiceOver accessibility regression: EditableText rotor actions only available when keyboard is focused #151029

@luomo-pro

Description

@luomo-pro

After the changes implemented in issue #94465, there seems to be a regression in VoiceOver accessibility for text editing on iOS.
While I cannot be certain that this issue directly caused the problem, I noticed the regression after this change was implemented, suggesting a potential correlation.
This issue significantly impacts the user experience for visually impaired users.

Current behavior:

  1. When a user activates an editable text field and the keyboard appears, they must first focus on the keyboard with VoiceOver before using the rotor to access editing options like "Select All" and "Paste".
  2. If VoiceOver focus is on the text field instead of the keyboard, using the rotor to navigate to "Edit" only shows "Scan Text" option.

Expected behavior (previous functionality):
Users could immediately use the VoiceOver rotor to access editing options like "Select All" and "Paste" after activating the text field, without needing to focus on the keyboard first.

This change makes it much more difficult for visually impaired users to perform common text editing tasks. Previously, they could easily paste text using the rotor immediately after activating the text field. Now, they must first navigate to the keyboard, which can be problematic, especially if the keyboard input mode is set to "Touch Typing". In this mode, any touch on the keyboard immediately activates keys, potentially inserting unwanted characters.

To reproduce:

  1. Enable VoiceOver on an iOS device.
  2. Run the following minimal example:
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('VoiceOver Test')),
        body: const Center(
          child: Padding(
            padding: EdgeInsets.all(16.0),
            child: TextField(
              decoration: InputDecoration(
                hintText: 'Enter text here',
              ),
            ),
          ),
        ),
      ),
    );
  }
}
  1. Activate the text field.
  2. Attempt to use the VoiceOver rotor to access editing options.

Flutter version: Flutter (Channel master, 3.23.0-13.0.pre.298)

Metadata

Metadata

Assignees

Labels

a: accessibilityAccessibility, e.g. VoiceOver or TalkBack. (aka a11y)a: text inputEntering text in a text field or keyboard related problemsc: regressionIt was better in the past than it is nowfound in release: 3.23Found to occur in 3.23has reproducible stepsThe issue has been confirmed reproducible and is ready to work onplatform-iosiOS applications specificallyr: fixedIssue is closed as already fixed in a newer versionteam-iosOwned by iOS platform team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions