Как добавить "accessibilityLabel" в кнопки "UIAlertView"?
как добавить accessibilityLabel
to UIAlertView
кнопки?
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Announcement"
message: @"message!"
delegate: nil
cancelButtonTitle: @"cancelButton"
otherButtonTitles: @"otherButton"];
[alert show];
3 ответов
единственный способ сделать это-найти UIButtons в подвидах UIAlertView:
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.
Если вы действительно нужно иметь UIButtons с пользовательской accessibilityLabel вы должны изучить разработку пользовательского представления предупреждения вместо использования класса Apple UIAlertView.
по данным документация Apple (поиск "создание доступных представлений предупреждений"), AlertViews "доступны по умолчанию". Это, а также тот факт, что кнопки не редактируются, означает, что вы, вероятно, не должны пытаться изменить accessibilityLabel
s себя. По умолчанию они используют название кнопки и слово "кнопка", что должно быть хорошо.
доступность для представлений оповещений относится к заголовку оповещения, сообщению оповещения и заголовкам кнопок. Если VoiceOver активированный, он говорит слово "alert", когда отображается предупреждение, а затем говорит его название, а затем его сообщение, если установлено. Когда пользователь нажимает кнопку, VoiceOver произносит ее название и слово "кнопка"."Когда пользователь нажимает текстовое поле, VoiceOver говорит его значение и "текстовое поле" или " безопасное текстовое поле."
поздно, но, возможно, полезно для кого-то.
вы можете получить доступ к кнопки оповещения, используя их индекс. Например, вы можете найти вторую кнопку на экране следующим образом в Objective C:
- (void)getAlertActionButton:(XCUIApplication *)app {
// any code
XCUIElement *secondAlertButton = [[[app.alerts otherElements] buttons] elementBoundByIndex:1];
// any code
}
чтобы найти иерархию окон оповещений, используйте режим отладки.