UIKit:如何让VoiceOver自动为自定义按钮播报“Double-tap to open”?
UIKit:如何让VoiceOver自动为自定义按钮播报“Double-tap to open”?
嘿,这个需求其实很常见,iOS的无障碍框架已经内置了对应的逻辑,不用你手动去拼接那句提示语,我给你分享几种亲测有效的实现方式:
针对自定义UIView模拟的按钮:
如果你是用普通UIView做的自定义按钮,只需要给它设置正确的无障碍特征,让VoiceOver识别它为按钮类型,系统就会自动添加“Double-tap to open”这类标准操作提示。代码示例如下:// 假设customButtonView是你的自定义按钮视图 customButtonView.isUserInteractionEnabled = true customButtonView.accessibilityTraits = .button customButtonView.accessibilityLabel = "我的自定义功能按钮" // 务必设置标签,让用户知道这是什么按钮针对自定义子类的UIButton:
如果你是继承UIButton做的自定义按钮,有时候可能会因为重写属性意外修改了无障碍特征,这时候只需要确保它保留.button的特征即可,比如在初始化方法里重置:class CustomActionButton: UIButton { override init(frame: CGRect) { super.init(frame: frame) setupAccessibility() } required init?(coder: NSCoder) { super.init(coder: coder) setupAccessibility() } private func setupAccessibility() { // 确保按钮的无障碍特征为默认按钮类型 accessibilityTraits = .button // 这里可以根据需求设置accessibilityLabel accessibilityLabel = "自定义操作按钮" } }注意避坑:
别手动设置accessibilityHint来添加“Double-tap to open”,因为系统会根据控件的无障碍特征自动生成标准提示语。如果手动设置了hint,系统可能会优先播报你自定义的内容,反而覆盖了默认的提示。另外,一定要保证你的自定义控件开启了用户交互(isUserInteractionEnabled = true),否则VoiceOver会忽略它的可操作属性。
内容来源于stack exchange
相关产品推荐
相关产品推荐

