如何将accessibilityLabel
添加到UIAlertView
按钮?
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Announcement"
message: @"message!"
delegate: nil
cancelButtonTitle: @"cancelButton"
otherButtonTitles: @"otherButton"];
[alert show];
答案 0 :(得分:7)
根据Apple's documentation(搜索“使警报视图可访问”),AlertViews“默认可访问”。这个以及按钮不可编辑的事实意味着您可能不应该尝试自己更改accessibilityLabel
。默认情况下,他们使用按钮的标题和单词“按钮”,这应该没问题。
警报视图的辅助功能属于警报标题,警报消息和按钮标题。如果VoiceOver被激活,当显示警报时它会说出“警告”一词,然后说出其标题,然后是设置的消息。当用户点击按钮时,VoiceOver会说出其标题和单词“按钮”。当用户点击文本字段时,VoiceOver会说出其值和“文本字段”或“安全文本字段”。
答案 1 :(得分:1)
唯一可以做到这一点的方法是在UIAlertView子视图中找到UIButtons:
for (id button in self.alertView.subviews){
if ([button isKindOfClass:[UIButton class]]){
((UIButton *)button).accessibilityLabel = @"your custom text";
}
}
但是这是唯一的方法,因为没有公共API来访问这些UIButton,这是因为Apple不希望您访问它们。访问UIAlertView的内部视图class是Apple不允许的,可能会在App Store审核过程中拒绝您的应用。
如果您确实需要具有自定义accessibilityLabel的UIButtons,您应该考虑设计自定义警报视图而不是使用Apple UIAlertView类。
答案 2 :(得分:0)
迟到了,但也许对某人有用。
您可以使用索引访问警报按钮。例如,您可以在屏幕中找到第二个按钮,如下面的Objective C:
- (void)getAlertActionButton:(XCUIApplication *)app {
// any code
XCUIElement *secondAlertButton = [[[app.alerts otherElements] buttons] elementBoundByIndex:1];
// any code
}
要查找警报窗口层次结构,请使用调试模式。