Доступность для iOS — сфокусировано на кнопке

В моем приложении есть 3 кнопки, когда включена озвучка и пользователь проводит пальцем вправо, выбирается следующая кнопка.

Примечание. Фокус доступности кнопки отличается от нажатой кнопки.

Причина запроса: я хочу, чтобы приложение объявляло "AAA" при нажатии кнопки 1 и "BBB" при нажатии кнопки 1.

Вопросы

  • Как можно достичь вышеизложенного?
  • Есть ли способ вызвать метод при выборе кнопки.

person user1046037    schedule 27.11.2014    source источник


Ответы (2)


Просмотр (в данном случае кнопка) должен реализовать протокол UIAccessibilityFocus

- (void)accessibilityElementDidBecomeFocused
- (void)accessibilityElementDidLoseFocus
- (BOOL)accessibilityElementIsFocused
person user1046037    schedule 30.11.2014

Вот несколько строк кода ObjectiveC для выполнения того, что вы хотите сделать:

// Create button
UIButton *b = [[UIButton alloc] init];
// Set it's title
[b setTitle:@"AAA" forState:UIControlStateNormal];
// Set the label, i.e. it's name
[b setAccessibilityLabel:NSLocalizedString(@"AAA", @"")];
// Set button action description
[b setAccessibilityHint:NSLocalizedString(@"AAA button action description", @"")];
// Ad the button target, it's action
[b addTarget:self action:@selector(yourMethod:) forControlEvents:UIControlEventTouchUpInside];
// Add an observer
[b addObserver:self forKeyPath:@"state" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil];


// Implement this method in your controller
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if (object == self.b && [keyPath isEqualToString:@"state"]) {
        if (self.b.state == UIControlStateSelected) {
            // DO WHAT YOU WANT TO DO ON SELECTION
        }
    }
}

Ознакомьтесь с Руководством по специальным возможностям Apple. для получения дополнительной информации.

person dulgan    schedule 27.11.2014
comment
Как я узнаю, когда кнопка выбрана (не нажата кнопка)? - person user1046037; 27.11.2014
comment
Я обновил свой ответ, используя KVO, чтобы наблюдать за состоянием кнопки, может быть, есть другой способ, но я его сейчас не знаю, взгляните на руководства Apple Accessibily, чтобы получить явно лучшие способы сделать это. - person dulgan; 27.11.2014