我正在尝试为简单的UISlider
添加可访问性。我阅读了Apples adjustable document,发现我需要从UIAccessibilityAction protocol
实现两个功能。 accessibilityIncrement()
和accessibilityDecrement()
。
我遇到的问题是,即使我在viewDidLoad
中将滑块设置为可访问性元素并设置slider.accessibilityTraits = .adjustable
,即使我更改值也不会调用这两个替代函数
我也尝试设置slider.accessibilityLabel = "test"
,但是它仍然没有读取标签。仅滑块已到达多远。例如“ 80%”。
关于如何进行这项工作的任何想法?我还在stackOverflow上阅读了这两篇文章,但是没有一篇对我有用。 accessibilityIncrement / Decrement not called和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!
}
答案 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提供了有关带有代码段和插图的可调值的完整示例。
下面的示例将允许您用滑块调用.adjustable
和accessibilityIncrement()
方法。