2017-10-29 66 views
1

我试图做一个NSAccessibilityRadioButton元素,但我得到...让我们说一个意外的错误。下面是我在做什么Swift 4中的NSAccessibilityRadioButton实现

  1. 我有一个基类NSAccessibilityElement的:

    class AccessibilityElementPrototype: NSAccessibilityElement { 
        . 
        . 
        . 
    } 
    
  2. 我有另一个类,应该实现NSAccessibilityRadioButton协议是这样的:

    class AccessibilityElementTab: AccessibilityElementPrototype, NSAccessibilityRadioButton { 
        func accessibilityValue() -> NSNumber? { 
         ... 
        } 
    } 
    

问题是我收到以下错误:

Method 'accessibilityValue()' with Objective-C selector 'accessibilityValue' conflicts with method 'accessibilityValue()' from superclass 'NSAccessibilityElement' with the same Objective-C selector

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

回答

0

我很开心你问这个,因为我以为我疯了。

看来,令人难以置信的是,某些NSAccessiblity协议在Swift中被破坏了。我已经向Apple公开了一个错误,我鼓励你也这样做。与此同时,解决这个问题相当容易,只是不方便。

您可以直接使用的NSView的方法来达到同样的效果:

view.setAccessibilityRole(...) 
view.setAccessibilityElement(true) 

@objc override func accessibilityValue() -> Any? { 
    ... 
} 

不要忘了accessibiltyElement属性设置为true。起初我并没有意识到这是必要的,并且不知道为什么没有出现。辅助功能检查员的显示忽视元素帮助我。

+1

这是令人难以置信的.... 10倍的男人。由于这是迄今为止唯一的解决方案,因此我会将答案标记为正确的 - 并更正它;-) –