我使用记录accessibilityLabel
按钮的分析工具。
我试图找到一种方法来更新accessibilityLabel
而不更改现有代码。
对于普通按钮,我使用titleLabel.text
。对于使用来自图像资源的名称的iconButtons,我使用accessibilityLabel
本身。
我遇到的一些问题:
accessibilityLabel
。因为那会以递归方式查找accessibilityLabel
。 accessibilityHint
破解了我的方式。它是我没有使用的存储属性... 这有效!但我已经told and read我不应该覆盖扩展程序中的功能不可靠的。所以我想知道我应该怎么做?
如果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!
}
}
}
答案 0 :(得分:0)
你正在与系统作斗争。您可以使用子类化来实现此目的。
为避免将来出现类似问题,请始终将您的拥有的基类中的所有UIButton
,UITableViewCell
,UIViewController
等子类化,这样您就可以容易做出这样的普遍变化。