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 if (![self.semanticsObject isAccessibilityBridgeAlive]) {
34 return NO;
35 }
36
37 if ([self.semanticsObject bridge]->isVoiceOverRunning()) {
38 return self.semanticsObject.accessibilityLabel.length > 0;
39 }
40
41 if (self.semanticsObject.isAccessibilityElement) {
42 return YES;
43 }
44
45 if (self.contentSize.width > self.frame.size.width ||
46 self.contentSize.height > self.frame.size.height) {
47 return YES;
48 }
49
50 return NO;
51}
52
53- (NSString*)accessibilityLabel {
54 return self.semanticsObject.accessibilityLabel;
55}
56
57- (NSAttributedString*)accessibilityAttributedLabel {
58 return self.semanticsObject.accessibilityAttributedLabel;
59}
60
61- (NSString*)accessibilityValue {
62 return self.semanticsObject.accessibilityValue;
63}
64
65- (NSAttributedString*)accessibilityAttributedValue {
66 return self.semanticsObject.accessibilityAttributedValue;
67}
68
69- (NSString*)accessibilityHint {
70 return self.semanticsObject.accessibilityHint;
71}
72
73- (NSAttributedString*)accessibilityAttributedHint {
74 return self.semanticsObject.accessibilityAttributedHint;
75}
76
77- (BOOL)accessibilityActivate {
78 return [self.semanticsObject accessibilityActivate];
79}
80
81- (void)accessibilityIncrement {
82 [self.semanticsObject accessibilityIncrement];
83}
84
85- (void)accessibilityDecrement {
86 [self.semanticsObject accessibilityDecrement];
87}
88
89- (BOOL)accessibilityScroll:(UIAccessibilityScrollDirection)direction {
90 return [self.semanticsObject accessibilityScroll:direction];
91}
92
93- (BOOL)accessibilityPerformEscape {
94 return [self.semanticsObject accessibilityPerformEscape];
95}
96
97- (void)accessibilityElementDidBecomeFocused {
98 [self.semanticsObject accessibilityElementDidBecomeFocused];
99}
100
101- (void)accessibilityElementDidLoseFocus {
102 [self.semanticsObject accessibilityElementDidLoseFocus];
103}
104
105- (id)accessibilityContainer {
106 return self.semanticsObject.accessibilityContainer;
107}
108
109- (NSInteger)accessibilityElementCount {
110 return self.semanticsObject.children.count;
111}
112
113- (void)scrollViewWillEndDragging:(UIScrollView*)scrollView
114 withVelocity:(CGPoint)velocity
115 targetContentOffset:(inout CGPoint*)targetContentOffset {
116 _isDoingSystemScrolling = YES;
117}
118
119- (void)scrollViewDidEndDecelerating:(UIScrollView*)scrollView {
120 _isDoingSystemScrolling = NO;
121}
122
123@end
NSArray< SemanticsObject * > * children
const uintptr_t id
int BOOL