Поддержка действий

NSAccessibility определяет три метода для доступа к действиям объекта:

Первый метод возвращает массив имен действия, поддерживаемых объектом доступности, вторые возвраты локализованная строка, описывающая определенное действие, и третье выполняет определенное действие.

При поддержке действия в подклассе необходимо переопределить все три метода. В 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];
}

При выполнении действия реализация подкласса идеально должна вызвать те же методы, вызывающиеся, если действие выполняется непосредственно от пользовательского интерфейса.