Тестирующий хит и клавиатурный фокус

Вспомогательные приложения часто должны быть в состоянии получить доступ к объекту пользовательского интерфейса, который является в определенном расположении на экране, или это в настоящее время имеет клавиатурный фокус. Протокол NSAccessibility определяет методы, которые вспомогательное приложение использует для получения этой информации из приложения.

Тестирование хита

Тестирование хита идентифицирует самый глубокий элемент иерархии доступности, расположенной в определенной точке на экране. Например, вспомогательное приложение может хотеть идентифицировать пользовательский доступный объект, находящийся ниже текущей позиции курсора.

Протокол NSAccessibility определяет accessibilityHitTest: метод, который, так же к стандарту hitTest: метод просмотра, возвращает самого дальнего потомка иерархии доступности, содержащей указанную точку (в нижних левых относительных координатах экрана). В отличие от стандарта hitTest: метод просмотра, однако, accessibilityHitTest: метод никогда не вызывают, если реализация доступности Какао уже не решила, что точка находится в получателе. Это означает, что класс должен переопределить этот метод только, когда это содержит дочерние объекты доступности; бездетные объекты доступности никогда не должны переопределять этот метод.

Когда объект доступности получает accessibilityHitTest: метод, поэтому, это знает, что указанная точка находится где-нибудь в нем. Объект доступности тогда имеет возможность выполнить более глубокое тестирование хита путем идентификации, какой дочерний объект доступности, если таковые имеются, содержит точку. NSMatrix, например, идентифицирует, какая из его ячеек содержит точку и распространяет accessibilityHitTest: обменивайтесь сообщениями к нему. В конечном счете бездетный объект доступности подтверждает, что это - объект в указанной точке и возвратах self от метода. Проигнорированный объект доступности без любых дочерних элементов не возвращается self; вместо этого, это возвращает своего первого непроигнорированного наследователя.

Определение клавиатурного фокуса

Тестирование фокуса идентифицирует самый глубокий элемент иерархии доступности, имеющей клавиатурный фокус. Протокол NSAccessibility определяет accessibilityFocusedUIElement метод, который вспомогательное приложение может отправить для определения, какой объект имеет клавиатурный фокус.

Как с accessibilityHitTest: метод, accessibilityFocusedUIElement метод никогда не вызывают, если реализация доступности Какао уже не решила, что получатель имеет клавиатурный фокус где-нибудь в нем. Это означает, что класс должен переопределить этот метод только, когда это содержит дочерние объекты доступности; бездетные объекты доступности никогда не должны переопределять этот метод.

Когда объект доступности получает accessibilityFocusedUIElement сообщение, поэтому, это знает, что (или один из его дочерних элементов) имеет клавиатурный фокус. Объект доступности тогда имеет возможность выполнить более глубокое тестирование фокуса путем определения, у кого из его дочерних элементов есть клавиатурный фокус и отправляющий к нему accessibilityFocusedUIElement сообщение. NSMatrix, например, идентифицирует, какая из его ячеек имеет фокус и распространяет accessibilityFocusedUIElement обменивайтесь сообщениями к нему. В конечном счете бездетный объект доступности подтверждает, что имеет клавиатурный фокус и возвраты self от метода. Проигнорированный объект без любых дочерних элементов возвращает своего первого непроигнорированного наследователя вместо self.