Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Instance Methods | Properties | List of all members
FlutterScrollableSemanticsObject Class Reference

#include <SemanticsObject.h>

Inheritance diagram for FlutterScrollableSemanticsObject:
SemanticsObject

Instance Methods

(instancetype) - initWithBridge:uid: [implementation]
 
(void) - dealloc [implementation]
 
(void) - accessibilityBridgeDidFinishUpdate [implementation]
 
(id- nativeAccessibility [implementation]
 
(float) - scrollExtentMax [implementation]
 
(float) - scrollPosition [implementation]
 
(CGSize) - contentSizeInternal [implementation]
 
(CGPoint) - contentOffsetInternal [implementation]
 
- Instance Methods inherited from SemanticsObject
(BOOL- isAccessibilityBridgeAlive
 
(void) - setSemanticsNode:
 
(void) - replaceChildAtIndex:withChild:
 
(BOOL- nodeWillCauseLayoutChange:
 
(BOOL- nodeWillCauseScroll:
 
(BOOL- nodeShouldTriggerAnnouncement:
 
(void) - collectRoutes:
 
(NSString *) - routeName
 
(BOOL- onCustomAccessibilityAction:
 
((unavailable("Use initWithBridge instead") - __attribute__
 
(instancetype) - init [implementation]
 
(void) - setChildren: [implementation]
 
(void) - setChildrenInHitTestOrder: [implementation]
 
(void) - privateSetParent: [implementation]
 
(NSAttributedString *) - createAttributedStringFromString:withAttributes: [implementation]
 
(void) - showOnScreen [implementation]
 
(BOOL- isAccessibilityElement [implementation]
 
(bool) - isFocusable [implementation]
 
(NSString *) - accessibilityIdentifier [implementation]
 
(NSString *) - accessibilityLabel [implementation]
 
(bool) - containsPoint: [implementation]
 
(id- search: [implementation]
 
(id- _accessibilityHitTest:withEvent: [implementation]
 
(BOOL- accessibilityScrollToVisible [implementation]
 
(BOOL- accessibilityScrollToVisibleWithChild: [implementation]
 
(NSAttributedString *) - accessibilityAttributedLabel [implementation]
 
(NSString *) - accessibilityHint [implementation]
 
(NSAttributedString *) - accessibilityAttributedHint [implementation]
 
(NSString *) - accessibilityValue [implementation]
 
(NSAttributedString *) - accessibilityAttributedValue [implementation]
 
(CGRect) - accessibilityFrame [implementation]
 
(CGRect) - globalRect [implementation]
 
(void) - setAccessibilityContainer: [implementation]
 
(id- accessibilityContainer [implementation]
 
(BOOL- accessibilityActivate [implementation]
 
(void) - accessibilityIncrement [implementation]
 
(void) - accessibilityDecrement [implementation]
 
(BOOL- accessibilityScroll: [implementation]
 
(BOOL- accessibilityPerformEscape [implementation]
 
(void) - accessibilityElementDidBecomeFocused [implementation]
 
(void) - accessibilityElementDidLoseFocus [implementation]
 

Properties

FlutterSemanticsScrollViewscrollView [implementation]
 
- Properties inherited from SemanticsObject
int32_t uid
 
SemanticsObjectparent
 
fml::WeakPtr< flutter::AccessibilityBridgeIosbridge
 
flutter::SemanticsNode node
 
BOOL hasChildren
 
NSArray< SemanticsObject * > * children
 
NSArray< SemanticsObject * > * childrenInHitTestOrder
 
id nativeAccessibility
 

Detailed Description

The semantics object for scrollable. This class creates an UIScrollView to interact with the iOS.

Definition at line 188 of file SemanticsObject.h.

Method Documentation

◆ accessibilityBridgeDidFinishUpdate

- (void) accessibilityBridgeDidFinishUpdate
implementation

Called after accessibility bridge finishes a semantics update.

Subclasses can override this method if they contain states that can only be updated once every node in the accessibility tree has finished updating.

Reimplemented from SemanticsObject.

Definition at line 157 of file SemanticsObject.mm.

181 {
182 // In order to make iOS think this UIScrollView is scrollable, the following
183 // requirements must be true.
184 // 1. contentSize must be bigger than the frame size.
185 // 2. The scrollable isAccessibilityElement must return YES
186 //
187 // Once the requirements are met, the iOS uses contentOffset to determine
188 // what scroll actions are available. e.g. If the view scrolls vertically and
189 // contentOffset is 0.0, only the scroll down action is available.
190 [_scrollView setFrame:[self accessibilityFrame]];
191 [_scrollView setContentSize:[self contentSizeInternal]];
192 [_scrollView setContentOffset:[self contentOffsetInternal] animated:NO];
193}

◆ contentOffsetInternal

- (CGPoint) contentOffsetInternal
implementation

Definition at line 157 of file SemanticsObject.mm.

240 {
241 CGPoint result;
242 CGPoint origin = _scrollView.frame.origin;
243 const SkRect& rect = self.node.rect;
245 result = ConvertPointToGlobal(self, CGPointMake(rect.x(), rect.y() + [self scrollPosition]));
247 result = ConvertPointToGlobal(self, CGPointMake(rect.x() + [self scrollPosition], rect.y()));
248 } else {
249 result = origin;
250 }
251 return CGPointMake(result.x - origin.x, result.y - origin.y);
252}
GAsyncResult * result
flutter::SemanticsNode node
fml::scoped_nsobject< UIScrollView > _scrollView
sk_sp< SkBlender > blender SkRect rect
Definition SkRecords.h:350
const int kHorizontalScrollSemanticsActions
const int kVerticalScrollSemanticsActions

◆ contentSizeInternal

- (CGSize) contentSizeInternal
implementation

Definition at line 157 of file SemanticsObject.mm.

226 {
227 CGRect result;
228 const SkRect& rect = self.node.rect;
229
231 result = CGRectMake(rect.x(), rect.y(), rect.width(), rect.height() + [self scrollExtentMax]);
233 result = CGRectMake(rect.x(), rect.y(), rect.width() + [self scrollExtentMax], rect.height());
234 } else {
235 result = CGRectMake(rect.x(), rect.y(), rect.width(), rect.height());
236 }
237 return ConvertRectToGlobal(self, result).size;
238}

◆ dealloc

- (void) dealloc
implementation

Reimplemented from SemanticsObject.

Definition at line 157 of file SemanticsObject.mm.

174 {
175 [_scrollView removeFromSuperview];
176 _scrollView.semanticsObject = nil;
177 [_scrollView release];
178 [super dealloc];
179}

◆ initWithBridge:uid:

- (instancetype) initWithBridge: (fml::WeakPtr<flutter::AccessibilityBridgeIos>)  bridge
uid: (int32_t)  uid 
implementation

Reimplemented from SemanticsObject.

Definition at line 157 of file SemanticsObject.mm.

163 uid:(int32_t)uid {
164 self = [super initWithBridge:bridge uid:uid];
165 if (self) {
166 _scrollView = [[FlutterSemanticsScrollView alloc] initWithSemanticsObject:self];
167 [_scrollView setShowsHorizontalScrollIndicator:NO];
168 [_scrollView setShowsVerticalScrollIndicator:NO];
169 [self.bridge->view() addSubview:_scrollView];
170 }
171 return self;
172}
fml::WeakPtr< flutter::AccessibilityBridgeIos > bridge

◆ nativeAccessibility

- (id) nativeAccessibility
implementation

Definition at line 157 of file SemanticsObject.mm.

195 {
196 return _scrollView;
197}

◆ scrollExtentMax

- (float) scrollExtentMax
implementation

Definition at line 157 of file SemanticsObject.mm.

201 {
202 if (![self isAccessibilityBridgeAlive]) {
203 return 0.0f;
204 }
205 float scrollExtentMax = self.node.scrollExtentMax;
206 if (isnan(scrollExtentMax)) {
207 scrollExtentMax = 0.0f;
208 } else if (!isfinite(scrollExtentMax)) {
210 }
211 return scrollExtentMax;
212}
constexpr float kScrollExtentMaxForInf
SINT bool isfinite(const Vec< N, T > &v)
Definition SkVx.h:1003

◆ scrollPosition

- (float) scrollPosition
implementation

Definition at line 157 of file SemanticsObject.mm.

214 {
215 if (![self isAccessibilityBridgeAlive]) {
216 return 0.0f;
217 }
218 float scrollPosition = self.node.scrollPosition;
219 if (isnan(scrollPosition)) {
220 scrollPosition = 0.0f;
221 }
222 NSCAssert(isfinite(scrollPosition), @"The scrollPosition must not be infinity");
223 return scrollPosition;
224}

Property Documentation

◆ scrollView

- (FlutterSemanticsScrollView*) scrollView
readwritenonatomicretainimplementation

Provided by category FlutterScrollableSemanticsObject().

Definition at line 157 of file SemanticsObject.mm.


The documentation for this class was generated from the following files: