不使用滑块调用 accessibilityIncrement 和 accessibilityDecrement

accessibilityIncrement and accessibilityDecrement not called with a slider

我正在尝试为简单的 UISlider 添加辅助功能。我阅读了 Apples adjustable document 并发现我需要实现 UIAccessibilityAction protocol 中的两个功能; accessibilityIncrement()accessibilityDecrement().

我遇到的问题是,即使我在 viewDidLoad 中将滑块设置为可访问性元素并设置 slider.accessibilityTraits = .adjustable,即使我更改了这两个覆盖函数也不会被调用值。

我也试过设置slider.accessibilityLabel = "test",但还是读不到标签。只有滑块已经走了多远。例如“80%”。

关于如何使这项工作有任何想法吗?我还在 Whosebug 上阅读了这两篇文章,但其中 none 对我有用。 accessibilityIncrement / Decrement not called and Accessibility accessibilityDecrement() not getting called

我还可以提一下,我也尝试在 accessibilityIncrement()accessibilityDecrement() 处设置断点,但没有任何反应。


我的代码

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!
}

您在视图控制器中实现了 accessibilityIncrement()accessibilityDecrement() 方法,但它们 应该属于创建的滑块 ,其特征应该是 .adjustable.

我建议您看一下这个 accessibility site,其中为 ObjC 和 Swift.

提供了一个关于可调整值的完整示例以及代码片段和插图

按照此示例将允许使用滑块调用 accessibilityIncrement()accessibilityDecrement() 方法