Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit b30c0a7

Browse files
authored
Remove UIAccessibilityTraitKeyboardKey to fix touch typing (#52333)
`UIAccessibilityTraitKeyboardKey` was added in #4575 so that `TextInputSemanticsObject` supported VoiceOver gestures for text editing features, such as pinch to select text, and up/down fling to move cursor. After experimenting with it, I found that those features were still available even after removing `UIAccessibilityTraitKeyboardKey`. Fixes flutter/flutter#94465. In Touch Typing Mode: https://github.com/flutter/engine/assets/15619084/ccfe90ff-d3bc-427b-b1aa-9ec1242c0c89 In Standard Typing Mode: https://github.com/flutter/engine/assets/15619084/c78b1fb0-0816-41fb-9dd5-ed8b8a4cda2d [C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
1 parent 367f6a2 commit b30c0a7

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

shell/platform/darwin/ios/framework/Source/SemanticsObjectTest.mm

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#import "flutter/shell/platform/darwin/ios/framework/Source/FlutterTouchInterceptingView_Test.h"
1111
#import "flutter/shell/platform/darwin/ios/framework/Source/SemanticsObject.h"
1212
#import "flutter/shell/platform/darwin/ios/framework/Source/SemanticsObjectTestMocks.h"
13+
#import "flutter/shell/platform/darwin/ios/framework/Source/accessibility_text_entry.h"
1314

1415
FLUTTER_ASSERT_ARC
1516

@@ -1008,4 +1009,19 @@ - (void)testFlutterPlatformViewSemanticsContainer {
10081009
XCTAssertNil(weakPlatformView);
10091010
}
10101011

1012+
- (void)testTextInputSemanticsObject {
1013+
fml::WeakPtrFactory<flutter::AccessibilityBridgeIos> factory(
1014+
new flutter::testing::MockAccessibilityBridge());
1015+
fml::WeakPtr<flutter::AccessibilityBridgeIos> bridge = factory.GetWeakPtr();
1016+
1017+
flutter::SemanticsNode node;
1018+
node.label = "foo";
1019+
node.flags = static_cast<int32_t>(flutter::SemanticsFlags::kIsTextField) |
1020+
static_cast<int32_t>(flutter::SemanticsFlags::kIsReadOnly);
1021+
TextInputSemanticsObject* object = [[TextInputSemanticsObject alloc] initWithBridge:bridge uid:0];
1022+
[object setSemanticsNode:&node];
1023+
[object accessibilityBridgeDidFinishUpdate];
1024+
XCTAssertEqual([object accessibilityTraits], UIAccessibilityTraitNone);
1025+
}
1026+
10111027
@end

shell/platform/darwin/ios/framework/Source/accessibility_text_entry.mm

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -304,12 +304,8 @@ - (UIAccessibilityTraits)accessibilityTraits {
304304
if (![self isAccessibilityBridgeAlive]) {
305305
return 0;
306306
}
307-
// Adding UIAccessibilityTraitKeyboardKey to the trait list so that iOS treats it like
308-
// a keyboard entry control, thus adding support for text editing features, such as
309-
// pinch to select text, and up/down fling to move cursor.
310-
UIAccessibilityTraits results = [super accessibilityTraits] |
311-
[self textInputSurrogate].accessibilityTraits |
312-
UIAccessibilityTraitKeyboardKey;
307+
UIAccessibilityTraits results =
308+
[super accessibilityTraits] | [self textInputSurrogate].accessibilityTraits;
313309
// We remove an undocumented flag to get rid of a bug where single-tapping
314310
// a text input field incorrectly says "empty line".
315311
// See also: https://github.com/flutter/flutter/issues/52487

0 commit comments

Comments
 (0)