如何禁用自定义Button普通态图片的VoiceOver读图片名?
解决方案
方法1:清空图片的无障碍标签
用UIImage(named:)创建普通态图片后,直接给图片设置空的accessibilityLabel,阻断VoiceOver读取图片文件名:
if let normalImage = UIImage(named: imageName1) { normalImage.accessibilityLabel = "" // 关键:清空图片默认的无障碍标签 self.setImage(normalImage, for: .normal) } self.setImage(UIImage(named: imageName1), for: .selected)
方法2:自定义按钮的无障碍属性
直接给按钮设置自定义朗读文本,并管理选中状态的无障碍特性,让VoiceOver优先读取按钮的配置而非图片信息:
// 设置按钮的无障碍朗读文本 self.accessibilityLabel = "自定义按钮" // 替换为你需要的描述内容 // 设置按钮的基础无障碍特性 self.accessibilityTraits = .button // 监听选中状态变化,同步更新无障碍特性 self.addTarget(self, action: #selector(updateAccessibilityTraits), for: .valueChanged) @objc private func updateAccessibilityTraits() { if isSelected { accessibilityTraits.insert(.selected) } else { accessibilityTraits.remove(.selected) } }
问题说明
出现这个问题的核心原因是:通过UIImage(named:)创建的图片,若未手动设置accessibilityLabel,系统会默认将图片文件名作为无障碍标签,VoiceOver读取按钮时会包含这部分内容。上述两种方法分别从图片本身和按钮整体的无障碍配置入手,都能解决该问题。
内容的提问来源于stack exchange,提问作者AMT
相关产品推荐
相关产品推荐

