@@ -69,6 +69,11 @@ - (NSString *)grey_description {
69
69
[description appendFormat: @" ; isAccessible=%@ " , self .isAccessibilityElement ? @" Y" : @" N" ];
70
70
}
71
71
72
+ // IsAccessibilityElement.
73
+ if ([self respondsToSelector: @selector (accessibilityViewIsModal )]) {
74
+ [description appendFormat: @" ; accessibilityViewIsModal=%@ " , self .accessibilityViewIsModal ? @" Y" : @" N" ];
75
+ }
76
+
72
77
// AccessibilityIdentifier from UIAccessibilityIdentification.
73
78
if ([self respondsToSelector: @selector (accessibilityIdentifier )]) {
74
79
NSString *value = [self performSelector: @selector (accessibilityIdentifier )];
@@ -188,6 +193,27 @@ - (NSString *)grey_description {
188
193
return description;
189
194
}
190
195
196
+ - (id )viewCoveringByViewIsModal {
197
+ if (![self respondsToSelector: @selector (superview )]) {
198
+ return nil ;
199
+ }
200
+ id superview = [(id )self superview ];
201
+ if (![superview respondsToSelector: @selector (subviews )]) {
202
+ return nil ;
203
+ }
204
+ NSArray <id > *subviews = (NSArray <id > *)[(id )superview subviews ];
205
+ for (id subview in subviews) {
206
+ if (subview == self || ![subview respondsToSelector: @selector (accessibilityViewIsModal )]) {
207
+ continue ;
208
+ }
209
+ BOOL isModal = [(id )subview accessibilityViewIsModal ];
210
+ if (isModal) {
211
+ return subview;
212
+ }
213
+ }
214
+ return [(id )superview viewCoveringByViewIsModal ];
215
+ }
216
+
191
217
- (NSString *)grey_shortDescription {
192
218
NSMutableString *description = [[NSMutableString alloc ] init ];
193
219
@@ -201,6 +227,21 @@ - (NSString *)grey_shortDescription {
201
227
[description appendString: axIdentifierDescription];
202
228
}
203
229
230
+ if ([self respondsToSelector: @selector (accessibilityViewIsModal )]) {
231
+ NSString *accessibilityViewIsModal = (BOOL )[self performSelector: @selector (accessibilityViewIsModal )] ? @" Y" : @" N" ;
232
+ NSString *axViewIsModalDescription =
233
+ [self grey_formattedDescriptionOrEmptyStringForValue: accessibilityViewIsModal
234
+ withPrefix: @" ; AX.viewIsModal=" ];
235
+ [description appendString: axViewIsModalDescription];
236
+ }
237
+
238
+ id coveringView = [self viewCoveringByViewIsModal ];
239
+ NSString *coveringViewDesc = (coveringView == nil ) ? @" nil" : [NSString stringWithFormat: @" %@ %p " , NSStringFromClass ([coveringView class ]), coveringView];
240
+ NSString *coveringViewDescription =
241
+ [self grey_formattedDescriptionOrEmptyStringForValue: coveringViewDesc
242
+ withPrefix: @" ; AX.coveredBy=" ];
243
+ [description appendString: coveringViewDescription];
244
+
204
245
if ([self respondsToSelector: @selector (accessibilityLabel )]) {
205
246
NSString *axLabelDescription =
206
247
[self grey_formattedDescriptionOrEmptyStringForValue: self .accessibilityLabel
0 commit comments