让 VoiceOver 说 "Swipe Up or Down to Select a Custom Action, then double tap to activate"
Make VoiceOver say "Swipe Up or Down to Select a Custom Action, then double tap to activate"
我有一个 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 之后做的。我无法管理的是它说 向上或向下滑动到 Select 自定义操作,然后双击在 textView 获得焦点时激活。
现在它说 "xxxxxx Option 1 [pause] link [pause] yyyy Option 2 [pause] link [pause]"
一旦 textView 获得焦点,如果我向下滑动它,它会告诉我 "Choose Option One" 和 "Choose Option Two"。如果在它说 "Choose Option X" 之后我双击,则选择了更正选项。
技术上一切都很好,我只是想像视频中那样向用户宣布说明。最坏的情况我会把它附加到 accessibilityLabel
,但那很老套。
我可能错了,但是不能像你提到的那样读出动作,只有可调值可以。
多亏了这个 detailed summary 我关注了这个视频的内容,我听说 :
- "Adjustable, swipe up or down with one finger to adjust the value" 可调整元素:video.
- "Actions available" 仅选择具有自定义操作的元素:video。
"Actions available" 仅在您实施时通过操作 读出,您不能有任何其他内容。
如果我错了,请告诉我你听到你提到的 WWDC 视频的延时,好吗?
现在,如果您需要有关 .adjustable
特性的更多信息,包括插图和代码片段 (ObjC + Swift),我建议您采取看看 this site.
- 设置 accessibilityCustomActions 时,OS 宣布“可用操作”。向上或向下滑动至 Select 自定义操作,然后
双击激活
- 您可以设置 accessibilityHint 以提供自定义消息。
我有一个 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 之后做的。我无法管理的是它说 向上或向下滑动到 Select 自定义操作,然后双击在 textView 获得焦点时激活。
现在它说 "xxxxxx Option 1 [pause] link [pause] yyyy Option 2 [pause] link [pause]"
一旦 textView 获得焦点,如果我向下滑动它,它会告诉我 "Choose Option One" 和 "Choose Option Two"。如果在它说 "Choose Option X" 之后我双击,则选择了更正选项。
技术上一切都很好,我只是想像视频中那样向用户宣布说明。最坏的情况我会把它附加到 accessibilityLabel
,但那很老套。
我可能错了,但是不能像你提到的那样读出动作,只有可调值可以。
多亏了这个 detailed summary 我关注了这个视频的内容,我听说 :
- "Adjustable, swipe up or down with one finger to adjust the value" 可调整元素:video.
- "Actions available" 仅选择具有自定义操作的元素:video。
"Actions available" 仅在您实施时通过操作 读出,您不能有任何其他内容。
如果我错了,请告诉我你听到你提到的 WWDC 视频的延时,好吗?
现在,如果您需要有关 .adjustable
特性的更多信息,包括插图和代码片段 (ObjC + Swift),我建议您采取看看 this site.
- 设置 accessibilityCustomActions 时,OS 宣布“可用操作”。向上或向下滑动至 Select 自定义操作,然后 双击激活
- 您可以设置 accessibilityHint 以提供自定义消息。