2017-10-29 7 views
1

NSAccessibilityRadioButton 요소를 만들려고하는데 예상치 못한 오류가 있다고 가정 해 봅시다.Swift 4의 NSAccessibilityRadioButton 구현

class AccessibilityElementPrototype: NSAccessibilityElement { 
    . 
    . 
    . 
} 
  • 이 같은 NSAccessibilityRadioButton 프로토콜을 구현해야 다른 클래스,이 :

    class AccessibilityElementTab: AccessibilityElementPrototype, NSAccessibilityRadioButton { 
        func accessibilityValue() -> NSNumber? { 
         ... 
        } 
    } 
    
  • 을 여기에 내가
    1. 내가 NSAccessibilityElement의 기본 클래스가 뭘하는지입니다

      문제는 다음과 같은 오류가 발생합니다.

      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? { 
        ... 
    } 
    

    true로 accessibiltyElement 속성을 설정에 대해 잊지 마세요. 나는 그것이 처음에는 필요하다는 것을 깨닫지 못했고 왜 아무 것도 나타나지 않는 이유를 알 수 없었다. 접근성 검사기의 무시 된 요소가 도움이되었습니다.

    +1

    이것은 믿기지 않습니다. 10x man. 이것이 지금까지의 유일한 해결책이기 때문에 나는 답을 정확하다고 표시 할 것이다. - 그리고 그것을 바로 잡는다 ;-) –