ios - 让 VoiceOver 说“向上或向下滑动以选择自定义操作,然后双击以激活”
问题描述
我有UITextView
两个不同的超链接。为了在 VoiceOver 开启时有机会在两个链接之间进行选择,我做了:
class MyTextView {
override func awakeFromNib() {
super.awakeFromNib()
let str = "xxxxxx Option 1 yyyy Option 2"
let attrStr = NSMutableAttributedString(str)
let rangeOption1 = (str as NSString).range(of: "Option 1")
let rangeOption2 = (str as NSString).range(of: "Option 2")
attrStr.addAttributes([.link: "option1", range: rangeOption1])
attrStr.addAttributes([.link: "option2", range: rangeOption2])
self.attributedText = attrStr
}
override var isAccessibilityElement: Bool {
get { return true }
set {}
}
override var accessibilityLabel: String? {
get { return "Link Options" }
set {}
}
override var accessibilityCustomActions: [UIAccessibilityCustomAction]? {
get {
return [
UIAccessibilityCustomAction(name: "Choose Option One", target: self, selector: #selector(option1)),
UIAccessibilityCustomAction(name: "Choose Option Two", target: self, selector: #selector(option2))]
}
set {}
}
@objc func option1() { print ("Option 1") }
@objc func option2() { print ("Option 2") }
}
我是在第 33 分钟的这个WWDC 视频之后执行此操作的。我无法管理的是它说向上或向下滑动以选择自定义操作,然后在 textView 聚焦时双击以激活。
现在它说“xxxxxx 选项 1 [暂停] 链接 [暂停] yyyy 选项 2 [暂停] 链接 [暂停]”
一旦 textView 获得焦点,如果我向下滑动它,它会告诉我“选择选项一”和“选择选项二”。如果在它说“选择选项 X”之后我双击,则选择了更正选项。
从技术上讲,一切都很好,我只想像在视频中那样向用户宣布说明。在最坏的情况下,我只会将其附加到accessibilityLabel
,但这很hacky。
解决方案
- 设置accessibilityCustomActions后,操作系统会宣布“可用的操作。向上或向下滑动以选择自定义操作,然后双击以激活”
- 您可以设置accessibilityHint以提供自定义消息。
推荐阅读
- javascript - 检查任何 url 是否为真
- python - 文件中的文本,DB_query 转化为元组或列表,并得到两者的区别
- angular - Angular 6:如何随机显示一个元素(*ngIf 中的 Math.random())
- c# - 如何在 ASP.NET CORE MVC 中正确返回嵌套的一对多数据?
- python - Pandas:如何获取 A 列值在给定列表中的行的 B 列值
- java - 使用没有 ID 的实体
- postgresql - 分区表上的 Postgres 错误(已删除类型 X 的 ERROR 42703 属性 4)
- python - 是否可以将数组传递给神经网络感知器?
- java - 从列表中删除多余的文件夹路径
- vector - 我应该如何存储我将要删除但从不添加的项目列表?