Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion Integration Tests/Tests/SLTextFieldTest.m
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,8 @@ - (void)setUpTestCaseWithSelector:(SEL)testSelector {
testSelector == @selector(testSetTextWhenFieldClearsOnBeginEditing) ||
testSelector == @selector(testGetText) ||
testSelector == @selector(testDoNotMatchEditorAccessibilityObjects) ||
testSelector == @selector(testClearTextButton)) {
testSelector == @selector(testClearTextButton) ||
testSelector == @selector(testSetTextWithinTableViewCellUnderControl)) {
_textField = [SLTextField elementWithAccessibilityLabel:@"test element"];
} else if (testSelector == @selector(testMatchesSearchBarTextField) ||
testSelector == @selector(testSetSearchBarText) ||
Expand Down Expand Up @@ -76,6 +77,13 @@ - (void)testSetTextWithinTableViewCell {
SLAssertTrue([SLAskApp(text) isEqualToString:expectedText], @"Text was not set to expected value.");
}

- (void)testSetTextWithinTableViewCellUnderControl {
NSString *const expectedText = @"Fooness";
SLAssertNoThrow([UIAElement(_textField) setText:expectedText], @"Should not have thrown.");
SLAssertNoThrow([UIAElement(_textField) tap], @"Should not have thrown.");
SLAssertTrue([SLAskApp(text) isEqualToString:expectedText], @"Text was not set to expected value.");
}

- (void)testSetTextCanHandleTapHoldCharacters {
NSString *const expectedText = @"foo’s a difficult string to type!";
SLAssertNoThrow([UIAElement(_textField) setText:expectedText], @"Should not have thrown.");
Expand Down
15 changes: 13 additions & 2 deletions Integration Tests/Tests/SLTextFieldTestViewController.m
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ - (void)loadViewForTestCase:(SEL)testCase {

if (testCase == @selector(testSetText) ||
testCase == @selector(testSetTextWithinTableViewCell) ||
testCase == @selector(testSetTextWithinTableViewCellUnderControl) ||
testCase == @selector(testSetTextCanHandleTapHoldCharacters) ||
testCase == @selector(testSetTextClearsCurrentText) ||
testCase == @selector(testSetTextClearsCurrentTextWithinTableViewCell) ||
Expand All @@ -55,7 +56,8 @@ - (void)loadViewForTestCase:(SEL)testCase {
_textField = [[UITextField alloc] initWithFrame:kTextFieldFrame];

if (testCase == @selector(testSetTextWithinTableViewCell) ||
testCase == @selector(testSetTextClearsCurrentTextWithinTableViewCell)) {
testCase == @selector(testSetTextClearsCurrentTextWithinTableViewCell) ||
testCase == @selector(testSetTextWithinTableViewCellUnderControl)) {
_tableView = [[UITableView alloc] initWithFrame:(CGRect){CGPointZero, CGSizeMake(320.0f, 44.0f)}];
_tableView.dataSource = self;
[view addSubview:_tableView];
Expand Down Expand Up @@ -101,6 +103,7 @@ - (void)viewDidLoad {
[super viewDidLoad];

_textField.accessibilityLabel = @"test element";
_textField.autocorrectionType = UITextAutocorrectionTypeNo;
_textField.borderStyle = UITextBorderStyleRoundedRect;
if (self.testCase == @selector(testClearTextButton)) {
_textField.clearButtonMode = UITextFieldViewModeAlways;
Expand Down Expand Up @@ -161,6 +164,7 @@ - (NSString *)text {
NSString *text;
if (self.testCase == @selector(testSetText) ||
self.testCase == @selector(testSetTextWithinTableViewCell) ||
self.testCase == @selector(testSetTextWithinTableViewCellUnderControl) ||
self.testCase == @selector(testSetTextCanHandleTapHoldCharacters) ||
self.testCase == @selector(testSetTextClearsCurrentText) ||
self.testCase == @selector(testSetTextClearsCurrentTextWithinTableViewCell) ||
Expand Down Expand Up @@ -201,7 +205,14 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N
_textField.textColor = [UIColor blackColor];
[_textField becomeFirstResponder];

[tableViewCell.contentView addSubview:_textField];
if (self.testCase == @selector(testSetTextWithinTableViewCellUnderControl)) {
UIControl *control = [[UIControl alloc] initWithFrame:self.view.bounds];
[control addSubview:_textField];

[tableViewCell.contentView addSubview:control];
} else {
[tableViewCell.contentView addSubview:_textField];
}

return tableViewCell;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -450,9 +450,40 @@ - (BOOL)classForcesPresenceInAccessibilityHierarchy {


@implementation UIControl (SLAccessibilityHierarchy)

- (BOOL)classForcesPresenceInAccessibilityHierarchy {
return YES;
BOOL forcesPresence = YES;
BOOL containedWithinTableView = NO;

id parent = self;
do {
parent = [parent slAccessibilityParent];

if ([parent isKindOfClass:[UITableView class]]) {
containedWithinTableView = YES;
}
} while (parent && !containedWithinTableView);

if (containedWithinTableView) {
NSMutableArray *children = [[self slChildAccessibilityElementsFavoringSubviews:YES] mutableCopy];
NSUInteger i = 0;
while (i < children.count) {
id child = children[i];

if ([child isKindOfClass:[UIControl class]]) {
forcesPresence = NO;
break;
}

[children addObjectsFromArray:[child slChildAccessibilityElementsFavoringSubviews:YES]];

++i;
}
}

return forcesPresence;
}

@end


Expand Down