在UIBarButtonItem上设置辅助功能属性

时间:2009-10-26 22:03:00

标签: iphone objective-c accessibility

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

如何设置这些属性?

9 个答案:

答案 0 :(得分:28)

您可以使用“用户定义的运行时属性”并在那里指定您的辅助功能信息: Runtime attributes

答案 1 :(得分:22)

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

答案 2 :(得分:15)

好的,即使你可以使用IB在其他UI元素上设置辅助功能属性,似乎在Interface Builder中也无法做到这一点。所以我在工具栏上设置了一个标签,然后将此代码添加到我的viewWillAppear方法中:

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

UIView *view = (UIView*)[bottombar.items objectAtIndex:0];
[view setAccessibilityLabel:NSLocalizedString(@"Add Bookmark", @"")];
[view setAccessibilityHint:NSLocalizedString(@"Add Bookmark", @"")];
每个按钮项的

等......

不是最优雅,但它有效。

答案 3 :(得分:7)

我知道这已经过时了,但我只是遇到了这个问题。从iOS 5.0开始,您现在可以通过执行以下操作轻松设置UIBarButtonItem的辅助功能标签:

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

不再是黑客攻击。

答案 4 :(得分:4)

我得到了上面的代码,可以使用一个额外的行来处理UIBarButtonItems:

[view setIsAccessibilityElement:YES];

答案 5 :(得分:3)

您可以使用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 Accessibility options in Interface Builder

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

答案 6 :(得分:2)

尝试手动设置辅助功能标签对我来说不适用于UIBarButtonItem图像。但是,如果我手动设置标题,那么标签就可以了。但它会在图像下方显示标题。

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

答案 7 :(得分:1)

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

enter image description here

答案 8 :(得分:-5)

查看Apple UIAccessibility上的文档。