web-dev-qa-db-ja.com

UIBarButtonItemにアクセシビリティ属性を設定します

Interface BuilderにいくつかのUIBarButtonItemオブジェクトがあり、これらのボタンのアクセシビリティラベルまたはヒントを設定するオプションが見つかりません。

これらの属性を設定するにはどうすればよいですか?

31
Tim Norman

「ユーザー定義のランタイム属性」を使用して、そこでアクセシビリティ情報を指定できます。 Runtime attributes

28
Rafael Nobre

InterfaceBuilderでaccessibilityLabelユーザー定義ランタイム属性を設定するだけでは実際には十分ではありません。また、isAccessibilityElementtrueに設定する必要があります。これにより、すべてのアクセシビリティ情報がInterfaceBuilder内に保持されます。

IB Screenshot

22
Dan

さて、IBを使用して他のUI要素にアクセシビリティ属性を設定できたとしても、InterfaceBuilderでそれを行う方法はないようです。そこで、ツールバーにタグを設定してから、このコードをviewWillAppearメソッドに追加しました。

UIToolbar *bottombar = (UIToolbar*)[self viewWithTag:kBottomToolbar];

UIView *view = (UIView*)[bottombar.items objectAtIndex:0];
[view setAccessibilityLabel:NSLocalizedString(@"Add Bookmark", @"")];
[view setAccessibilityHint:NSLocalizedString(@"Add Bookmark", @"")];

各ボタンアイテムなど...

最もエレガントではありませんが、機能します。

15
Tim Norman

私はこれが古いことを知っていますが、私はちょうどこれの必要性に遭遇しました。 iOS 5.0以降、次の手順でUIBarButtonItemのユーザー補助ラベルを簡単に設定できるようになりました。

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

これ以上のハックはありません。

7
rmaddy

上記のコードを取得して、UIBarButtonItemsを1行追加しました。

[view setIsAccessibilityElement:YES];
4
Lee Ann Rucker

これにはIBInspectableを使用できるため、InterfaceBuilderのサイドパネルにいくつかの便利なオプションが表示されます。

public extension UIBarButtonItem {
  @IBInspectable var accessibilityEnabled: Bool {
    get {
      return isAccessibilityElement
    }
    set {
      isAccessibilityElement = newValue
    }
  }

  @IBInspectable var accessibilityLabelText: String? {
    get {
      return accessibilityLabel
    }
    set {
      accessibilityLabel = newValue
    }
  }
}

UIBarButton Accessibility options in Interface Builder

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

3
Kane Cheshire

アクセシビリティラベルを手動で設定しようとしても、UIBarButtonItem画像では機能しませんでした。ただし、タイトルを手動で設定すると、ラベルは機能します。ただし、画像の下にタイトルが表示されます。

最終的にUIButtonを作成し、それをUIBarButtonItemのカスタムビューとして使用しました。唯一の損失は、UIBarButtonItemが実行する画像マスキングです。追加されたボーナス:IBで構成可能なアクセシビリティ。

2
user243578

Xcode 10.2では、Titleフィールドが適切に機能します。ここでは、たとえば、私のボタンは「並べ替え」としてアクセスできます。

enter image description here

1