Skip to content

Commit 67cbaef

Browse files
authored
Implement scroll to focused interop views (#2228)
Use `UIAccessibilityElementFocusedNotification` instead of the private method `accessibilityScrollToVisible ` as a source of accessibility scroll. Refactor `InteropWrappingView` to support accessibility focus beyond bounds. Fixes https://youtrack.jetbrains.com/issue/CMP-7999/Autoscroll-does-not-work-when-accessibility-focuses-on-interop-views ## Release Notes ### Features - iOS - Implement accessibility scroll to focused interop views
1 parent 5f61ccc commit 67cbaef

File tree

8 files changed

+210
-114
lines changed

8 files changed

+210
-114
lines changed

compose/ui/ui-uikit/src/uikitMain/objc/CMPUIKitUtils/CMPUIKitUtils/CMPAccessibilityElement.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,6 @@ NS_ASSUME_NONNULL_BEGIN
4545

4646
- (void)accessibilityDecrement;
4747

48-
// Private SDK method. Calls when the item is swipe-to-focused in VoiceOver.
49-
- (BOOL)accessibilityScrollToVisible;
50-
51-
// Private SDK method. Calls when the item is swipe-to-focused in VoiceOver.
52-
- (BOOL)accessibilityScrollToVisibleWithChild:(id)child;
53-
5448
- (void)accessibilityElementDidBecomeFocused;
5549

5650
- (void)accessibilityElementDidLoseFocus;
@@ -59,12 +53,6 @@ NS_ASSUME_NONNULL_BEGIN
5953

6054
- (BOOL)accessibilityPerformEscape;
6155

62-
- (__nullable id)accessibilityElementAtIndex:(NSInteger)index;
63-
64-
- (NSInteger)accessibilityElementCount;
65-
66-
- (NSInteger)indexOfAccessibilityElement:(id)element;
67-
6856
- (NSArray *)accessibilityElements;
6957

7058
- (void)setAccessibilityElements:(nullable NSArray *)accessibilityElements;

compose/ui/ui-uikit/src/uikitMain/objc/CMPUIKitUtils/CMPUIKitUtils/CMPAccessibilityElement.m

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -81,14 +81,6 @@ - (BOOL)accessibilityPerformEscape {
8181
return [super accessibilityPerformEscape];
8282
}
8383

84-
- (BOOL)accessibilityScrollToVisible {
85-
return NO;
86-
}
87-
88-
- (BOOL)accessibilityScrollToVisibleWithChild:(id)child {
89-
return NO;
90-
}
91-
9284
- (void)accessibilityElementDidBecomeFocused {
9385
[super accessibilityElementDidBecomeFocused];
9486
}
@@ -97,18 +89,6 @@ - (void)accessibilityElementDidLoseFocus {
9789
[super accessibilityElementDidLoseFocus];
9890
}
9991

100-
- (NSInteger)accessibilityElementCount {
101-
return [super accessibilityElementCount];
102-
}
103-
104-
- (NSInteger)indexOfAccessibilityElement:(nonnull id)element {
105-
return [super indexOfAccessibilityElement:element];
106-
}
107-
108-
- (id _Nullable)accessibilityElementAtIndex:(NSInteger)index {
109-
return [super accessibilityElementAtIndex:index];
110-
}
111-
11292
- (NSArray *)accessibilityElements {
11393
return [super accessibilityElements];
11494
}

compose/ui/ui-uikit/src/uikitMain/objc/CMPUIKitUtils/CMPUIKitUtils/CMPInteropWrappingView.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ NS_ASSUME_NONNULL_BEGIN
2323

2424
- (__nullable id)accessibilityContainer CMP_ABSTRACT_FUNCTION;
2525

26+
- (NSArray *)accessibilityElements;
27+
28+
- (void)setAccessibilityElements:(nullable NSArray *)accessibilityElements;
29+
2630
@end
2731

2832
NS_ASSUME_NONNULL_END

compose/ui/ui-uikit/src/uikitMain/objc/CMPUIKitUtils/CMPUIKitUtils/CMPInteropWrappingView.m

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,12 @@ - (__nullable id)accessibilityContainer {
2222
CMP_ABSTRACT_FUNCTION_CALLED
2323
}
2424

25+
- (NSArray *)accessibilityElements {
26+
return [super accessibilityElements];
27+
}
28+
29+
- (void)setAccessibilityElements:(nullable NSArray *)accessibilityElements {
30+
[super setAccessibilityElements:accessibilityElements];
31+
}
32+
2533
@end

0 commit comments

Comments
 (0)