Как изменить UIButton accessibilityLabel в расширении

Я использую инструмент аналитики, который регистрирует accessibilityLabel кнопок. Я пытаюсь найти способ обновить accessibilityLabel без изменения моего существующего кода.

Для обычных кнопок я использую titleLabel.text, Для iconButtons, которые используют свое имя из изображений, которые я использую 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!
        }
    }
}

1 ответ

Решение

Вы боретесь с системой. Вы можете добиться этого, используя подклассы.

Чтобы избежать подобных проблем в будущем, всегда имейте ВСЕ ваши UIButton, UITableViewCell, UIViewControllerи т. д. подклассы из вашего собственного базового класса, чтобы вы могли легко сделать такие универсальные изменения.

Другие вопросы по тегам