【发布时间】:2019-08-06 11:49:55
【问题描述】:
我在 Interface Builder 中有几个 UIBarButtonItem 对象,我找不到任何选项来设置这些按钮的可访问性标签或提示。
如何设置这些属性?
【问题讨论】:
-
有没有办法在 XCode 5 的 Storyboard 上做到这一点?
标签: iphone objective-c accessibility
我在 Interface Builder 中有几个 UIBarButtonItem 对象,我找不到任何选项来设置这些按钮的可访问性标签或提示。
如何设置这些属性?
【问题讨论】:
标签: iphone objective-c accessibility
您可以使用“用户定义的运行时属性”并在此处指定您的可访问性信息:
【讨论】:
accessibilityHint,而不是keyPath
好的,所以在 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", @"")];
对每个按钮项以此类推...
不是最优雅的,但它确实有效。
【讨论】:
UIBarButtonItem 上设置 accessibilityLabel 属性。
我知道这是旧的,但我刚刚遇到了这个需求。从 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 中配置可访问性。
【讨论】: