Macos NSAccessibilityRadioButton在Swift 4中的实现

Macos NSAccessibilityRadioButton在Swift 4中的实现,macos,swift4,appkit,Macos,Swift4,Appkit,我正在尝试创建一个NSAccessibilityRadioButton元素,但我得到。。。比如说一个意外的错误。这就是我正在做的 我有一个NSAccessibilityElement的基类: class AccessibilityElementPrototype: NSAccessibilityElement { . . . } 我有另一个类,它应该实现NSAccessibilityRadioButton协议,如下所示: class AccessibilityElementTab

我正在尝试创建一个NSAccessibilityRadioButton元素,但我得到。。。比如说一个意外的错误。这就是我正在做的

  • 我有一个NSAccessibilityElement的基类:

    class AccessibilityElementPrototype: NSAccessibilityElement {
      .
      .
      .
    }
    
  • 我有另一个类,它应该实现NSAccessibilityRadioButton协议,如下所示:

    class AccessibilityElementTab: AccessibilityElementPrototype, NSAccessibilityRadioButton {
        func accessibilityValue() -> NSNumber? {
            ...
        }
    }
    
  • 问题是我遇到了以下错误:

    具有Objective-C选择器的方法“accessibilityValue()”与具有相同Objective-C选择器的超类“NSAccessibilityElement”中的方法“accessibilityValue()”冲突


    如果有人已经遇到了这样的问题并有了解决方案,请分享。

    我真的很高兴你问这个问题,因为我觉得我疯了

    令人难以置信的是,一些NSACCESS协议在Swift中被破坏了。我已经打开了苹果的一个漏洞,我鼓励你也这样做。同时,解决这个问题相当容易,只是不方便

    您可以直接使用NSView方法来实现相同的结果:

    view.setAccessibilityRole(...)
    view.setAccessibilityElement(true)
    
    @objc override func accessibilityValue() -> Any? {
        ...
    }
    

    不要忘记将AccessibilityElement属性设置为true。起初我不知道这是必要的,也不明白为什么什么都没有出现。可访问性检查器的显示忽略的元素在这方面帮助了我。

    这真是难以置信。。。。10倍的人。因为这是到目前为止唯一的解决方案,所以我将把答案标记为正确-并且它是正确的;-)