我有一个带有两个不同超链接的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。

最佳答案

  • 设置了 accessibilityCustomActions 后,操作系统会宣布“可用操作。向上或向下滑动以选择一个自定义操作,然后
    双击激活“
  • 您可以设置可访问性提示以提供自定义消息。
  • 关于ios - 让VoiceOver说 "Swipe Up or Down to Select a Custom Action, then double tap to activate",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54945989/

    10-12 00:26
    查看更多