Ios 如何以编程方式更改UIButton的画外音值?
我在InterfaceBuilder中创建了一个UISwitch来打开和关闭音频。开关工作正常,但我想将Voiceover读取的值从当前的“0”和“1”更改为“Off”和“On”。我的代码如下: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
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。