Подтвердить что ты не робот

Задайте атрибуты доступности в UIBarButtonItem

У меня есть несколько объектов UIBarButtonItem в Interface Builder, и я не могу найти никакой опции для установки метки доступности или подсказки для этих кнопок.

Как установить эти атрибуты?

4b9b3361

Ответ 1

Вы можете использовать "Пользовательские атрибуты времени выполнения" и указать там свою информацию о доступности: Runtime attributes

Ответ 2

На самом деле недостаточно просто установить атрибут AccessibilityLabel User Defined Runtime Attribute в IB. Вы также должны установить isAccessibilityElement в true. Это сохраняет всю доступную информацию в IB. IB Screenshot

Ответ 3

Итак, похоже, что нет никакого способа сделать это в 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", @"")];

и т.д. для каждого элемента кнопки...

Не самый элегантный, но он работает.

Ответ 4

Я знаю, что это уже давно, но я просто нуждаюсь в этом. Начиная с iOS 5.0, теперь вы можете легко установить метку доступности UIBarButtonItem, выполнив:

UIBarButtonItem *btn = [[UIBarButtonItem alloc] init...;
btn.accessibilityLabel = @"Label";

Больше никаких хаков.

Ответ 5

Я получил код выше для работы с UIBarButtonItems с одной дополнительной строкой:

[view setIsAccessibilityElement: YES];

Ответ 6

Вы можете использовать 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
    }
  }
}

Параметры доступности UIBarButton в построителе интерфейса

https://gist.github.com/KaneCheshire/dcce5246c3399072a5200189bfc53fe2

Ответ 7

Попытка установить метки доступности вручную не работала для меня с изображениями UIBarButtonItem. Однако, если я задал заголовок вручную, метка будет работать. Но он отображает заголовок под изображением.

Я закончил создание UIButton и использовал его как пользовательское представление для UIBarButtonItem. Единственная потеря - это маскирование изображения, которое выполняет UIBarButtonItem. Добавлен бонус: доступность настраивается в IB.

Ответ 8

В Xcode 10.2 поле Title работает хорошо. Вот, например, моя кнопка доступна как "Сортировка":

enter image description here

Ответ 9

Ознакомьтесь с документацией Apple на UIAccessibility.