Ios AccessibilityCreement和AccessibilityCreement未使用滑块调用
我正在尝试向一个简单的Ios AccessibilityCreement和AccessibilityCreement未使用滑块调用,ios,swift,accessibility,uislider,Ios,Swift,Accessibility,Uislider,我正在尝试向一个简单的UISlider添加可访问性。我阅读了,发现我需要从UIAccessibilityAction协议实现两个函数accessibilitycrement()和accessibilitycrement() 我遇到的问题是,即使我在viewDidLoad中将滑块设置为可访问性元素并设置slider.accessibilityTraits=.adjustable,即使我更改了值,也不会调用这两个覆盖函数 我还试图设置slider.accessibilityLabel=“test”,
UISlider
添加可访问性。我阅读了,发现我需要从UIAccessibilityAction协议
实现两个函数accessibilitycrement()
和accessibilitycrement()
我遇到的问题是,即使我在viewDidLoad
中将滑块设置为可访问性元素并设置slider.accessibilityTraits=.adjustable
,即使我更改了值,也不会调用这两个覆盖函数
我还试图设置slider.accessibilityLabel=“test”,但它仍然无法读取标签。只有滑块已经走了多远。例如“80%”
你知道我该怎么做吗?我也在stackOverflow上读过这两篇文章,但没有一篇对我有用。及
我还可以提到,我还尝试在accessibilitycrement()
和accessibilitycrement()
上设置断点,但什么也没有发生
我的代码
您可以在视图控制器中实现
AccessibilityCrement()
和AccessibilityCrement()
方法,但是它们应该属于创建的滑块,其特征应该是。可调的
我建议您看看这里,这里为ObjC和Swift提供了一个关于可调值的完整示例,其中包含代码片段和插图
下面的示例将允许使用滑块调用AccessibilityCrement()
和AccessibilityCrement()
方法,看起来很棒!我要试试看会发生什么
override func viewDidLoad() {
super.viewDidLoad()
slider.isAccessibilityElement = true
slider.accessibilityLabel = "test"
slider.accessibilityTraits = .adjustable
}
override func accessibilityIncrement() {
slider.accessibilityValue = textField.text!
}
override func accessibilityDecrement() {
slider.accessibilityValue = textField.text!
}
@IBAction func sliderValueChanged(_ sender: UISlider) {
guard let unit = question?.unit else { return }
let currentValue = Int(sender.value + 0.5)
textField.text = "\(currentValue) \(unit)"
slider.accessibilityLabel = textField.text!
}