Поддержка действий
NSAccessibility определяет три метода для доступа к действиям объекта:
accessibilityActionNames
accessibilityActionDescription:
accessibilityPerformAction:
Первый метод возвращает массив имен действия, поддерживаемых объектом доступности, вторые возвраты локализованная строка, описывающая определенное действие, и третье выполняет определенное действие.
При поддержке действия в подклассе необходимо переопределить все три метода. В accessibilityActionNames
метод, необходимо вызвать реализацию суперкласса и добавить новое действие. Это позволяет вспомогательному приложению получать точный список всех действий, которые Вы поддерживаете. В других двух методах сравните имя действия к тем своим поддержкам подкласса; если никакое соответствие не найдено, вызовите реализацию суперкласса. Перечисление 1 показывает демонстрационные реализации этих методов, добавляющих новое названное действие @"Boing"
.
Перечисление 1 , Поддерживающее новое действие
static NSString *MyBoingActionName = @"Boing"; |
- (NSArray *)accessibilityActionNames |
{ |
static NSArray *actions = nil; |
if (actions == nil) { |
actions = [[[super accessibilityActionNames] |
arrayByAddingObject:MyBoingActionName] retain]; |
} |
return actions; |
} |
- (NSString *)accessibilityActionDescription:(NSString *)action |
{ |
if ( [action isEqualToString:MyBoingActionName] ) |
return NSLocalizedString(@"BoingDescription", |
@"Performs the Boing action"); |
else |
return [super accessibilityActionDescription:action]; |
} |
- (void)accessibilityPerformAction:(NSString *)action |
{ |
if ( [action isEqualToString:MyBoingActionName] ) |
[self doBoing]; |
else |
[super accessibilityPerformAction:action]; |
} |
При выполнении действия реализация подкласса идеально должна вызвать те же методы, вызывающиеся, если действие выполняется непосредственно от пользовательского интерфейса.