Ios 如何以编程方式更改UIButton的画外音值?

Ios 如何以编程方式更改UIButton的画外音值?,ios,swift,voiceover,Ios,Swift,Voiceover,我在InterfaceBuilder中创建了一个UISwitch来打开和关闭音频。开关工作正常,但我想将Voiceover读取的值从当前的“0”和“1”更改为“Off”和“On”。我的代码如下: import UIKit class AudioStreamTableViewCell: UITableViewCell { weak var controller: EventDetailsViewController! weak var audioInterface: EventA

我在InterfaceBuilder中创建了一个UISwitch来打开和关闭音频。开关工作正常,但我想将Voiceover读取的值从当前的“0”和“1”更改为“Off”和“On”。我的代码如下:

import UIKit

class AudioStreamTableViewCell: UITableViewCell {
    weak var controller: EventDetailsViewController!
    weak var audioInterface: EventAudioInterface? { didSet { if self.audioInterface !== oldValue { self.updateUI() }}}
    func updateUI() {}
    override func awakeFromNib() {
        super.awakeFromNib()
        self.updateUI()
    }

}

class MuteStreamTableViewCell: AudioStreamTableViewCell {
    static let identifier = "MuteStreamTableViewCell"

    @IBOutlet var muteSwitch: UISwitch!

    override func updateUI() {
        self.muteSwitch.isOn = self.audioInterface?.muted ?? false
    }

    @IBAction func switchChanged(_ muteSwitch: UISwitch) {
        self.controller.setMuted(muteSwitch.isOn, on: self.audioInterface)

        if muteSwitch.isOn {
            self.muteSwitch.accessibilityValue = "on"
        } else {
            self.muteSwitch.accessibilityValue = "off"
        }
    }

}
画外音仍然会说“0”和“1”。我做错了什么

谢谢

Swift 4.2 我必须子类化
UISwitch
并重写
accessibilityValue

class AccessibilityUiSwitch: UISwitch {
    override var accessibilityValue: String? {
        get {
            return isOn ? "on" : "off"
        }
        set {
            self.accessibilityValue = newValue
        }
    }
}

这表明您可能需要尝试设置
accessibilityLabel
:当我这样做时,它会更改Voiceover为标签所说的字符串,覆盖我在IB中设置的标签(“静音开关”)。也就是说,语音标签现在被替换为“开”或“关”,而开关值仍然报告为“0”或“1”FWIW,VoiceOver在我的应用程序和整个iOS的其余部分中宣布开关的开/关值,而不是0/1。