我有一个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 video。我无法管理的是它说向上或向下滑动以选择“自定义操作”,然后双击以激活。 textView是集中的。
现在它说“ xxxxxx选项1 [暂停]链接[暂停] yyyy选项2 [暂停]链接[暂停]”
一旦textView被聚焦,如果我向下滑动它,它会告诉我“选择选项一”和“选择选项二”。如果在我双击“选择选项X”之后,选择了校正选项。
从技术上讲,一切都很好,我只想向用户宣布说明,就像在视频中一样。最糟糕的情况是,我只会将其附加到accessibilityLabel
上,但这很hacky。
答案 0 :(得分:2)
答案 1 :(得分:1)
我可能是错的,但我不认为可以像您提到的那样读取动作,只是可以调整值。
多亏了detailed summary,我跟随了这部影片的内容,并且听到了:
“可用的操作”仅在您实施时随操作一起读取,您本机不能拥有其他任何内容。
如果我错了,请告诉我听到您提到的WWDC视频的时间间隔,请问吗?
现在,如果您需要具有.adjustable
特性的更多信息,包括插图和代码段(ObjC + Swift),建议您看看this site。
答案 2 :(得分:0)
我在其他帖子中读错了。 VoiceOver从未这么说。我通过更改解决了该问题:
override var accessibilityLabel: String? {
get { return "Actions Available. Swipe Up or Down to Select a Custom Action, then double tap to activate" }
set {}
}