考虑将KIF添加到我们的应用程序以进行集成测试。我希望能够从UIActionSheet中选择一个按钮,但似乎没有一种有效的方法来在操作表中的每个按钮上设置辅助功能标签。
我正在使用accessibleElementCount,以这种方式迭代按钮。这是执行此操作的首选方法,还是有更标准的方法为UIActionSheets设置辅助功能?
答案 0 :(得分:4)
来自UIKit User Interface Catalog:
默认情况下可以访问操作表。
操作表的辅助功能主要涉及按钮标题。如果激活了VoiceOver,则在显示操作表时会显示“alert”一词,然后在设置时说出其标题(尽管iOS人机界面指南建议不要使用标题操作表)。当用户点击操作表中的按钮时,VoiceOver会说出其标题和“按钮”一词。
根据您的问题,您不清楚是否要将辅助功能标签更改为按钮标题+按钮以外的其他标签,但似乎无法直接进行此操作。
答案 1 :(得分:1)
你必须在你的班级中实现UIActionSheetDelegate。
- (void)willPresentActionSheet:(UIActionSheet *)actionSheet {
for (UIView *_yourView in actionSheet.subviews) {
if ([_yourView isKindOfClass:[UILabel class]]) {
[((UILabel *)_yourView) setFont:[UIFont boldSystemFontOfSize:14.0f]];
}
}
}
答案 2 :(得分:-1)
如果你想对UIActionSheet进行一些自定义控制(从使用KIF的测试角度来看),对我来说最简单的方法是用UIAlertController替换它,如果你想到的话,两者都不可能进行子类化课程,如果你测试像我这样的多语言应用程序 - 你会发现自己陷入困境。你可以设置UIAlertAction的属性,这里有一些代码,所以你可以有这个想法:
UIAlertAction* yesButton = [UIAlertAction
actionWithTitle:[LI18n localizedString:@"YES"]
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action) {
//Handle your yes please button action here
}];
yesButton.accessibilityLabel = @"YES_BUTTON";