我该如何在UIAlertView按钮中添加accessibilityLabel?

7

如何在 UIAlertView 按钮中添加 accessibilityLabel

UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Announcement" 
                                                message: @"message!"
                                               delegate: nil    
                                      cancelButtonTitle: @"cancelButton"  
                                      otherButtonTitles: @"otherButton"]; 

[alert show];

2
默认的可访问性有什么问题吗?我认为没有(官方的)方法可以更改它。 - Wain
3个回答

8
根据Apple文档(搜索“Making Alert Views Accessible”),AlertView默认是“可访问的”。这一点以及按钮不可编辑意味着您可能不应该尝试更改accessibilityLabel。默认情况下,它们使用按钮的标题和单词“button”,这应该没有问题。

警报视图的辅助功能涉及警报标题、警报消息和按钮标题。如果激活VoiceOver,则显示警报时会说出“警报”一词,然后说出其标题和消息(如果设置)。当用户点击按钮时,VoiceOver会说出它的标题和“按钮”一词。当用户点击文本字段时,VoiceOver会发出它的值和“文本字段”或“安全文本字段”的声音。


1
你唯一能够做的是在UIAlertView的子视图中找到UIButtons:
for (id button in self.alertView.subviews){
    if ([button isKindOfClass:[UIButton class]]){
        ((UIButton *)button).accessibilityLabel = @"your custom text";
    }
}

然而,这是唯一的方法,因为没有公共API可以访问这些UIButtons,并且这是因为Apple不希望您访问它们。访问UIAlertView类的内部视图是Apple不允许的,很可能会在App Store审核过程中导致您的应用被拒绝。如果您确实需要具有自定义accessibilityLabel的UIButtons,您应该考虑设计自定义警报视图,而不是使用Apple UIAlertView类。

0

可能晚了,但对某些人可能有用。

您可以通过索引访问警报按钮。例如,在Objective C中,您可以按以下方式查找屏幕上的第二个按钮:

- (void)getAlertActionButton:(XCUIApplication *)app {
    // any code 
    XCUIElement *secondAlertButton = [[[app.alerts otherElements] buttons] elementBoundByIndex:1];
    // any code    
}

要查找您的警报窗口层次结构,请使用调试模式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接