代码之家  ›  专栏  ›  技术社区  ›  mfaani

如何在扩展中修改uiButton的AccessibilityLabel

  •  0
  • mfaani  · 技术社区  · 6 年前

    我正在使用一个分析工具来记录 accessibilityLabel 钮扣。 我在想办法更新 可接近性标签 不改变我现有的代码。

    对于普通按钮,我使用 titleLabel.text . 对于使用来自我使用的图像资源的名称的iconbutton 可接近性标签 本身。

    我面临的一些问题:

    • 不能访问 可接近性标签 在它的吸气剂里。因为它会递归地寻找 可接近性标签 .
    • 所以我不得不使用另一个属性作为备份,因为这是一个扩展,所以我不能使用存储的属性。计算属性也不起作用,因为它会被困在同一个反馈循环中。
    • 最后我用 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!
            }
        }
    }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   mfaani    6 年前

    你在和系统抗争。你可以通过使用 子类化 .

    为了避免将来出现类似的问题 UIButton , UITableViewCell , UIViewController ,等等 拥有 基类,这样您就可以轻松地进行这种通用的更改。