如果该单元格是表格中唯一的单元格,我无法自动点击UIButton
内嵌UITableViewCell
。这是在使用KIF进行UI自动化的背景下。
这是我的相关电话:
[tester tapViewWithAccessibilityLabel: @"LABEL"
traits: UIAccessibilityTraitButton];
// trait only specified for 2nd case below
以下是我观察的内容:
如果我在UITableViewCell
KIF KIFUITestActor - waitForAccessibilityElement:view:withLabel:traits:tappable:
上放置辅助功能标签,则返回UITableView
,而不是单元格。不知怎的,这个表似乎继承了它唯一的子可访问性标签,让KIF在递归搜索时首先遇到它。
如果我将可访问性标签放在UIButton
上,KIF会找到它,但确定它是不可点击的(即UIView-KIFAdditions -tappablePointInRect:
返回NO
),可能是因为它主要是因为它按钮标签的细字体线之间是透明的(而是点击转到UITableViewCellContentView
)。
解决方法可能是通过NSIndexPath
点击行,但也许还有更好的方法可以克服我所面临的障碍。那么我如何通过拨打tapView...
来指示KIF点击这样的按钮?
答案 0 :(得分:0)
如果要在代码中创建单元格,请确保将按钮添加到cell.contentView。
如果要从xib加载单元格,请尝试将contentView发送到视图层次结构的后面(我还没有找到任何缺点):
[self sendSubviewToBack:self.contentView];
答案 1 :(得分:-1)
这只是为了确认此解决方法适用:
[tester tapRowAtIndexPath: [NSIndexPath indexPathForRow: 0 inSection: 0]
inTableViewWithAccessibilityIdentifier: @"IDENTIFIER"];
答案 2 :(得分:-1)
“好”解决方案应该是这样的:
UITableViewCell *cell = [tester waitForCellAtIndexPath:indexPath inTableViewWithAccessibilityIdentifier:tableAccessibilityIdentifier];
UIAccessibilityElement *element = [cell accessibilityElementWithLabel:accessibilityLabel traits:UIAccessibilityTraitButton];
[tester tapAccessibilityElement:element inView:cell];
不幸的是,它没有按预期工作。有时element
是UIAccessibilityElementMockView
并且在步骤3中点击它导致只是点击底层单元格。当然结果不会像预期的那样。
我已经设法通过做更多的事情来解决这个问题:
MyCustomCellClass *cell = (MyCustomCellClass *)[self waitForCellAtIndexPath:indexPath inTableViewWithAccessibilityIdentifier:tableAccessibilityIdentifier];
[cell.buttonOutlet sendActionsForControlEvents:UIControlEventTouchUpInside];
请注意,这意味着
但是嘿,KIF不受Apple的支持,所以有时,你知道,它会破坏:)。