NSAccessibilityProtocol

Panther·2021년 8월 7일
0
post-custom-banner

https://developer.apple.com/documentation/appkit/nsaccessibilityprotocol

"The complete list of properties and methods for accessible elements."

접근 가능한 요소를 위한 속성 및 메소드의 완전한 리스트입니다.

Declaration

protocol NSAccessibilityProtocol

Overview

접근성이 있는 형태가 되려면 앱은 UI 및 기능에 대한 정보를 보조 앱에 제공해야 합니다. 앱과 보조 앱이 상호작용하는 세 가지 방법이 있습니다.

  • Informational properties. NSAccessibilityProtocol은 뷰 혹은 컨트롤에 대한 정보를 제공하는 몇 가지 속성을 정의합니다. 표준 AppKit 뷰 혹은 컨트롤의 서브클래스로 작업하는 경우 원하는 속성을 설정하거나 getter와 setter에 오버라이드 할 수 있습니다. 기본값으로 getter만 오버라이드하는 것은 보조 앱에게 속성에 대해서 읽기 전용 접근임을 알려줍니다. setter만 오버라이드하는 것은 보조앱에게 속성에 대해서 쓰기 접근을 갖고 있음을 알려줍니다.
  • Action methods. NSAccessibilityProtocol은 버튼 입력, 마우스 클릭, 뷰 혹은 컨트롤 선택을 시뮬레이션 하는 몇 가지 메소드를 정의합니다. 이 메소드를 구현함으로써 보조 앱에 뷰 혹은 컨트롤을 드라이브할 수 있는 기능을 줄 수 있습니다.
  • Notifications. 뷰 혹은 컨트롤은 보조 앱이 언제 변하는지를 알 수 있도록 만들 필요가 있습니다. NSAccessibility.Notificationpost(element:notification:) 메소드를 사용해서 보낼 수 있는 몇 가지 노티피케이션을 정의합니다. role-specific 프로토콜은 이 노티피케이션을 포함하지 않지만, 표준 AppKit 컨트롤은 이미 표준 사용 패턴에 대한 적합한 메시지를 보냅니다. 커스텀 컨트롤을 생성하거나 표준적이지 않은 방법으로 표준 컨트롤을 사용할 때에만 고유한 노티피케이션을 보낼 필요가 있습니다.

만약 표준 AppKit UI 요소를 사용하고 있는 경우 대부분의 작업은 스스로 완료됩니다. AppKit 뷰와 컨트롤은 기본값으로 NSAccessibilityProtocol 프로토콜을 채택합니다. NSView, NSWindow, NSCell, NsDrawer는 이 프로토콜에서 모든 속성 및 메소드에 대한 기본값 구현을 제공합니다. 몇 가지 경우 앱을 더 잘 나타내도록, 추가적 컨텍스트를 제공할 수 있도록, 혹은 앱을 통한 사용자의 흐름을 수정할 수 있도록 이러한 기본값을 수정할 필요가 있을 수 있습니다.

커스텀 뷰 혹은 컨트롤 서브클래스를 사용하는 경우 정보를 갖는 적합한 속성, 액션 메소드, 노티피케이션 추가가 필요합니다. 이 경우 NSAccessibilityProtocol 대신 role-specific 프로토콜을 채택함으로써 추가할 수 있습니다. Custom Controls를 살펴보시기 바랍니다.

Custom Controls
https://developer.apple.com/documentation/appkit/accessibility_for_appkit/custom_controls
https://velog.io/@panther222128/Custom-Controls

만약 NSView를 상속받지 않았거나 혹은 접근성 사용 가능한 AppKit 클래스가 아닌 다른 것으로부터의 커스텀 UI 요소를 사용하는 경우 NSAccessibilityElement 클래스를 사용하시기 바랍니다.

Customizing User Interface Elements

UI 커스텀 서브클래스 생성 없이, 보조 앱이 UI 요소와 상호작용하는 방법을 조정할 수 있습니다. 만약 UI 요소가 NSView로부터 상속받았거나 접근성이 가능한 다른 AppKit 클래스로부터 상속받은 경우 아래 방법으로 커스터마이징 할 수 있습니다.

  • NSAccessibilityProtocol 프로토콜에 있는 setter 메소드를 사용해 접근성 값을 설정하는 것입니다.
  • NSAccessibilityProtocol에 있는 속성 혹은 메소드를 커스텀 구현으로 오버라이드하는 것입니다.

getter 메소드를 오버라이드 하면 시스템은 보조 앱이 getter를 호출하도록 합니다. 이는 동적 속성을 관리할 때 특히 유용합니다. 왜냐하면 변경에 대한 응답에서 속성 업데이트를 시도하는 것 대신 필요한 때에 현재 값을 계산할 수 있기 때문입니다.

setter 메소드를 오버라이드 하면 시스템은 보조 앱이 해당 속성을 읽고 수정할 수 있도록 해줍니다. isAccessibilitySelectorAllowed(_:)를 오버라이드 해서 어떤 접근자 메소드가 보조 앱을 사용할 것인지를 제어할 수 있습니다. 만약 보조 앱이 셀렉터를 호출할 수 있다면 true를 반환해야 하고, 반대의 경우 false를 반환합니다.

Topics


Assigning Rotors

NSAccessibilityCustomRotor

보이스오버 사용자가 관련 접근성 요소의 다음 인스턴스를 찾도록 도와주는 context-sensitive 함수입니다.

https://developer.apple.com/documentation/appkit/nsaccessibilitycustomrotor
https://velog.io/@panther222128/NSAccessibilityCustomRotor


post-custom-banner

0개의 댓글