5

我有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。

4

2 回答 2

6
  • 设置accessibilityCustomActions后,操作系统会宣布“可用的操作。向上或向下滑动以选择自定义操作,然后双击以激活”
  • 您可以设置accessibilityHint以提供自定义消息。
于 2019-06-17T23:56:00.540 回答
1

我可能错了,但不能像你提到的那样读出动作,只有可调值可以。

由于这个详细的摘要,我关注了这个视频的内容,我听说:

  • “可调整,用一根手指向上或向下滑动以调整值用于可调整元素:视频
  • "Actions available" only when the element with custom actions is selected : video .

“可用的操作”仅在您实施时与操作一起读出,您不能在本机拥有任何其他内容。

如果我错了,请告诉我你听到的 WWDC 视频的延时摄影,好吗?

现在,如果您需要有关该.adjustabletrait 的更多信息,包括插图和代码片段(ObjC + Swift),我建议您看看这个网站

于 2019-03-01T15:17:09.937 回答