Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
FlutterSemanticsScrollView.mm
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
6
9
11
12@implementation FlutterSemanticsScrollView
13
14- (instancetype)initWithSemanticsObject:(SemanticsObject*)semanticsObject {
15 self = [super initWithFrame:CGRectZero];
16 if (self) {
17 _semanticsObject = semanticsObject;
18 _isDoingSystemScrolling = NO;
19 self.delegate = self;
20 }
21 return self;
22}
23
24- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event {
25 return nil;
26}
27
28// The following methods are explicitly forwarded to the wrapped SemanticsObject because the
29// forwarding logic above doesn't apply to them since they are also implemented in the
30// UIScrollView class, the base class.
31
32- (BOOL)isAccessibilityElement {
33 flutter::AccessibilityBridgeIos* bridge = self.semanticsObject.bridge;
34 if (!bridge) {
35 return NO;
36 }
37
38 if (bridge->isVoiceOverRunning()) {
39 return self.semanticsObject.accessibilityLabel.length > 0;
40 }
41
42 if (self.semanticsObject.isAccessibilityElement) {
43 return YES;
44 }
45
46 if (self.contentSize.width > self.frame.size.width ||
47 self.contentSize.height > self.frame.size.height) {
48 return YES;
49 }
50
51 return NO;
52}
53
54- (NSString*)accessibilityLabel {
55 return self.semanticsObject.accessibilityLabel;
56}
57
58- (NSAttributedString*)accessibilityAttributedLabel {
59 return self.semanticsObject.accessibilityAttributedLabel;
60}
61
62- (NSString*)accessibilityValue {
63 return self.semanticsObject.accessibilityValue;
64}
65
66- (NSAttributedString*)accessibilityAttributedValue {
67 return self.semanticsObject.accessibilityAttributedValue;
68}
69
70- (NSString*)accessibilityHint {
71 return self.semanticsObject.accessibilityHint;
72}
73
74- (NSAttributedString*)accessibilityAttributedHint {
75 return self.semanticsObject.accessibilityAttributedHint;
76}
77
78- (BOOL)accessibilityActivate {
79 return [self.semanticsObject accessibilityActivate];
80}
81
82- (void)accessibilityIncrement {
83 [self.semanticsObject accessibilityIncrement];
84}
85
86- (void)accessibilityDecrement {
87 [self.semanticsObject accessibilityDecrement];
88}
89
90- (BOOL)accessibilityScroll:(UIAccessibilityScrollDirection)direction {
91 return [self.semanticsObject accessibilityScroll:direction];
92}
93
94- (BOOL)accessibilityPerformEscape {
95 return [self.semanticsObject accessibilityPerformEscape];
96}
97
98- (void)accessibilityElementDidBecomeFocused {
99 [self.semanticsObject accessibilityElementDidBecomeFocused];
100}
101
102- (void)accessibilityElementDidLoseFocus {
103 [self.semanticsObject accessibilityElementDidLoseFocus];
104}
105
106- (id)accessibilityContainer {
107 return self.semanticsObject.accessibilityContainer;
108}
109
110- (NSInteger)accessibilityElementCount {
111 return self.semanticsObject.children.count;
112}
113
114- (void)scrollViewWillEndDragging:(UIScrollView*)scrollView
115 withVelocity:(CGPoint)velocity
116 targetContentOffset:(inout CGPoint*)targetContentOffset {
117 _isDoingSystemScrolling = YES;
118}
119
120- (void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView {
121 _isDoingSystemScrolling = NO;
122}
123
124@end
Interface that represents an accessibility bridge for iOS.
virtual bool isVoiceOverRunning() const =0
const uintptr_t id
int BOOL