【问题标题】:Set the accessibility attributes on UIBarButtonItem在 UIBarButtonItem 上设置可访问性属性
【发布时间】:2019-08-06 11:49:55
【问题描述】:

我在 Interface Builder 中有几个 UIBarButtonItem 对象,我找不到任何选项来设置这些按钮的可访问性标签或提示。

如何设置这些属性?

【问题讨论】:

  • 有没有办法在 XCode 5 的 Storyboard 上做到这一点?

标签: iphone objective-c accessibility


【解决方案1】:

您可以使用“用户定义的运行时属性”并在此处指定您的可访问性信息:

【讨论】:

  • 快速更正,提示你应该使用accessibilityHint,而不是keyPath
【解决方案2】:

在 Interface Builder 中仅设置 accessibilityLabel 用户定义的运行时属性实际上是不够的。您还必须将isAccessibilityElement 设置为true。这将所有可访问性信息保留在 Interface Builder 中。

【讨论】:

  • 要匹配其他元素,类型应该是本地化字符串。
  • 你能这样翻译accessibilityLabel集吗?
【解决方案3】:

好的,所以在 Interface Builder 中似乎没有办法做到这一点,即使您可以使用 IB 在其他 UI 元素上设置可访问性属性。所以我在工具栏上设置了一个标签,然后将此代码添加到我的 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 上设置 accessibilityLabel 属性。
【解决方案4】:

我知道这是旧的,但我刚刚遇到了这个需求。从 iOS 5.0 开始,您现在可以通过以下方式轻松设置 UIBarButtonItem 的可访问性标签:

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

没有更多的黑客攻击。

【讨论】:

    【解决方案5】:

    我将上面的代码与 UIBarButtonItems 一起使用,增加了一行:

    [view setIsAccessibilityElement:YES];
    

    【讨论】:

    • 这解决了问题。请记住,如果父视图也将此设置为 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
        }
      }
    }
    

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

    【讨论】:

      【解决方案7】:

      尝试手动设置辅助功能标签对我来说不适用于 UIBarButtonItem 图像。但是,如果我手动设置标题,则标签将起作用。但它会在图片下方显示标题。

      我最终创建了一个 UIButton 并将其用作 UIBarButtonItem 的自定义视图。唯一的损失是 UIBarButtonItem 执行的图像屏蔽。额外奖励:可在 IB 中配置可访问性。

      【讨论】:

        【解决方案8】:

        在 Xcode 10.2 中,Title 字段运行良好。例如,在这里,我的按钮可以作为“排序”访问:

        【讨论】:

          猜你喜欢
          • 2013-12-30
          • 2019-04-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-02
          • 1970-01-01
          • 2017-05-09
          相关资源
          最近更新 更多