2017-10-29 102 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倍的男人。由於這是迄今爲止唯一的解決方案,因此我會將答案標記爲正確的 - 並更正它;-) –