如何在扩展中修改 UIButton 的 accessibilityLabel

how to modify UIButton's accessibilityLabel in an extension

我正在使用记录按钮 accessibilityLabel 的分析工具。 我正在尝试找到一种方法来更新 accessibilityLabel 而无需更改我现有的代码。

对于普通按钮,我使用 titleLabel.text。对于使用来自图像资产的名称的图标按钮,我使用 accessibilityLabel 本身。

我遇到的一些问题:

这行得通!但我一直认为我不应该重写扩展中的函数,因为那是不可靠的。所以我想知道我应该怎么做?

如果 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!
        }
    }
}

你在和体制作对。您可以使用 subclassing.

实现此目的

为避免将来出现类似问题,请始终将您的所有 UIButtonUITableViewCellUIViewController 等从您的 中复制class拥有 基础class,这样您就可以轻松进行此类通用更改。