Я использую аналитический инструмент, который регистрирует accessibilityLabel
кнопок.Я пытаюсь найти способ обновить accessibilityLabel
без изменения моего существующего кода.
Для обычных кнопок я использую titleLabel.text
.Для кнопок iconBet, которые используют свое имя, полученное из ресурсов изображения, я использую accessibilityLabel
.
Некоторые проблемы, с которыми я столкнулся:
- не может получить доступ к
accessibilityLabel
в своем геттере.Потому что это будет рекурсивно искать accessibilityLabel
. - Так что мне пришлось использовать другое свойство для поддержки, и так как это было расширение, я не смог использовать сохраненные свойства.Вычисленные свойства также не сработали, потому что они застряли бы в том же цикле обратной связи.
- В конце концов я взломал свой путь, используя
accessibilityHint
.Это сохраненное свойство, которым я не пользуюсь ...
Это работает! И все же мне сказали и прочитали , что я не должно переопределять функции в расширении, так как это ненадежно.Так что мне интересно, что мне делать?
А если у Swift есть какой-либо механизм, не включающий переопределение в расширении UIButton?!
вот мой код:
extension UIButton{
private var adjustAccessibilityLabel : String{
if titleLabel?.text?.isEmpty == false{
return titleLabel!.text!
}else if accessibilityHint?.isEmpty == false{
return accessibilityHint!
}else{
return "Empty"
}
}
open override var accessibilityLabel: String?{
get{
return "\(self.adjustAccessibilityLabel))"
}
set{
accessibilityHint = newValue // Hacking my way through!
}
}
}