让VoiceOver说“向上或向下滑动以选择自定义操作,然后双击以激活”

时间:2019-03-01 13:48:51

标签: ios swift accessibility 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 video。我无法管理的是它说向上或向下滑动以选择“自定义操作”,然后双击以激活。 textView是集中的。

现在它说“ xxxxxx选项1 [暂停]链接[暂停] yyyy选项2 [暂停]链接[暂停]”

一旦textView被聚焦,如果我向下滑动它,它会告诉我“选择选项一”和“选择选项二”。如果在我双击“选择选项X”之后,选择了校正选项。

从技术上讲,一切都很好,我只想向用户宣布说明,就像在视频中一样。最糟糕的情况是,我只会将其附加到accessibilityLabel上,但这很hacky。

3 个答案:

答案 0 :(得分:2)

  • 设置 accessibilityCustomActions 后,操作系统会宣布“可用操作。向上或向下滑动以选择自定义操作,然后 点按两次即可激活”
  • 您可以设置 accessibilityHint 以提供自定义消息。

答案 1 :(得分:1)

我可能是错的,但我不认为可以像您提到的那样读取动作,只是可以调整值。

多亏了detailed summary,我跟随了这部影片的内容,并且听到了:

  • “可调,用一根手指向上或向下滑动以调整值“ {元素,video”。
  • “可用操作” 仅在选择具有自定义操作的元素时:video

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

如果我错了,请告诉我听到您提到的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 {}

}