accessibilityIncrement和accessibilityDecrement不使用滑块调用

时间:2018-12-19 13:09:17

标签: ios swift accessibility uislider

我正在尝试为简单的UISlider添加可访问性。我阅读了Apples adjustable document,发现我需要从UIAccessibilityAction protocol实现两个功能。 accessibilityIncrement()accessibilityDecrement()

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

我也尝试设置slider.accessibilityLabel = "test",但是它仍然没有读取标签。仅滑块已到达多远。例如“ 80%”。

关于如何进行这项工作的任何想法?我还在stackOverflow上阅读了这两篇文章,但是没有一篇对我有用。 accessibilityIncrement / Decrement not calledAccessibility 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!
}

1 个答案:

答案 0 :(得分:1)

您在视图控制器中实现了 public String parseObj(JSONArray jsonArray) { int size = jsonArray.length(); String question = ""; try { for (int i = 0; i < size; i++) { JSONObject object = jsonArray.getJSONObject(0); JSONObject obj1 = object.getJSONObject("acf"); JSONArray array = obj1.getJSONArray("dars"); for (int j = 0; j < array.length(); j++) { JSONObject objectInner = jsonArray.getJSONObject(0); question = objectInner.getString("question"); } } } catch (JSONException e) { e.printStackTrace(); } return question; } accessibilityIncrement()方法,但是它们应属于已创建的滑块,其特征应为accessibilityDecrement()

我建议您看一下accessibility site,其中为ObjC和Swift提供了有关带有代码段和插图的可调值的完整示例。

下面的示例将允许您用滑块调用.adjustableaccessibilityIncrement()方法