У меня есть несколько объектов UIBarButtonItem в Interface Builder, и я не могу найти никакой опции для установки метки доступности или подсказки для этих кнопок.
Как установить эти атрибуты?
У меня есть несколько объектов UIBarButtonItem в Interface Builder, и я не могу найти никакой опции для установки метки доступности или подсказки для этих кнопок.
Как установить эти атрибуты?
Вы можете использовать "Пользовательские атрибуты времени выполнения" и указать там свою информацию о доступности:
На самом деле недостаточно просто установить атрибут AccessibilityLabel User Defined Runtime Attribute в IB. Вы также должны установить isAccessibilityElement в true. Это сохраняет всю доступную информацию в IB.
Итак, похоже, что нет никакого способа сделать это в Interface Builder, даже если вы можете установить атрибуты доступности для других элементов пользовательского интерфейса, используя IB. Поэтому я установил тег на свою панель инструментов, а затем добавил этот код к моему методу viewWillAppear:
UIToolbar *bottombar = (UIToolbar*)[self viewWithTag:kBottomToolbar];
UIView *view = (UIView*)[bottombar.items objectAtIndex:0];
[view setAccessibilityLabel:NSLocalizedString(@"Add Bookmark", @"")];
[view setAccessibilityHint:NSLocalizedString(@"Add Bookmark", @"")];
и т.д. для каждого элемента кнопки...
Не самый элегантный, но он работает.
Я знаю, что это уже давно, но я просто нуждаюсь в этом. Начиная с iOS 5.0, теперь вы можете легко установить метку доступности UIBarButtonItem
, выполнив:
UIBarButtonItem *btn = [[UIBarButtonItem alloc] init...;
btn.accessibilityLabel = @"Label";
Больше никаких хаков.
Я получил код выше для работы с UIBarButtonItems с одной дополнительной строкой:
[view setIsAccessibilityElement: YES];
Вы можете использовать IBInspectable
для этого, чтобы вы получили некоторые удобные параметры в боковой панели Interface Builder.
public extension UIBarButtonItem {
@IBInspectable var accessibilityEnabled: Bool {
get {
return isAccessibilityElement
}
set {
isAccessibilityElement = newValue
}
}
@IBInspectable var accessibilityLabelText: String? {
get {
return accessibilityLabel
}
set {
accessibilityLabel = newValue
}
}
}
https://gist.github.com/KaneCheshire/dcce5246c3399072a5200189bfc53fe2
Попытка установить метки доступности вручную не работала для меня с изображениями UIBarButtonItem. Однако, если я задал заголовок вручную, метка будет работать. Но он отображает заголовок под изображением.
Я закончил создание UIButton и использовал его как пользовательское представление для UIBarButtonItem. Единственная потеря - это маскирование изображения, которое выполняет UIBarButtonItem. Добавлен бонус: доступность настраивается в IB.
В Xcode 10.2 поле Title работает хорошо. Вот, например, моя кнопка доступна как "Сортировка":
Ознакомьтесь с документацией Apple на UIAccessibility.