- (void)setAttributedText:(NSAttributedString *)attributedText
/** ~~~ 생략 ~~~ **/
// Accessiblity
const auto currentAttributedText = self.attributedText; // Grab attributed string again in case it changed in the meantime
self.accessibilityLabel = self.defaultAccessibilityLabel;
// We update the isAccessibilityElement setting if this node is not switching between strings.
if (oldAttributedText.length == 0 || currentAttributedText.length == 0) {
// We're an accessibility element by default if there is a string.
self.isAccessibilityElement = (currentAttributedText.length != 0);
}
backgroundNode(ASDisplayNode) 기본적으로 isAccessibilityElement가 disabled(false)상태입니다. 직접 accessibilityLabel를 넣고 enable함으로서 [A] 이미지와 같이 포커스를 줄 수 있습니다.
ASButtonNode나 ASTextNode등 읽거나 클릭할 수 있는 Node에 내용물이 있는 경우 Texture 내부적으로 accesibility를 활성화합니다. 즉, setAttributedText나 text를 넣음과 동시에 accessibilityLabel이나 traits등이 기본값으로 지정됩니다.
accessibilityElements index 0부터 시작해서 순차적으로 포커싱을 해줍니다. (주로 순서를 지정합니다.)
Advenced
isAccessibilityContainer
// ASDisplayNode+Beta.h
/**
* @abstract Whether this node acts as an accessibility container. If set to YES, then this node's accessibility label will represent
* an aggregation of all child nodes' accessibility labels. Nodes in this node's subtree that are also accessibility containers will
* not be included in this aggregation, and will be exposed as separate accessibility elements to UIKit.
*/
@property BOOL isAccessibilityContainer;
부모에 isAccessibilityContainer를 활성화하는 경우 accessibility과 활성화된 자식노드들을 하나로 모아서 포커싱과 동시에 읽어줍니다.