У меня есть 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") }
}
Я сделал это после этого WWDC видео от мин. 33. Я не могу управлятьчто он говорит Проведите пальцем вверх или вниз, чтобы выбрать пользовательское действие, затем дважды нажмите, чтобы активировать , когда текстовое представление сфокусировано.
Прямо сейчас это говорит "xxxxxx Вариант 1 [пауза]ссылка [пауза] гггг Вариант 2 [пауза] ссылка [пауза] "
После того, как текстовое представление сфокусировано, если я проведу по нему вниз, оно сообщит мне« Выберите первый вариант »и« Выберите второй вариант »».Если после того, как он скажет «Выбрать опцию X», я дважды коснусь, будет выбрана опция исправления.
Технически все хорошо, я просто хочу сообщить пользователю инструкции, как это делается в видео.В худшем случае я просто добавлю это к accessibilityLabel
, но это глупо.