Доступность - UIPickerView как inputView - PullRequest
0 голосов
/ 20 февраля 2020

Я использую UIPickerView в качестве inputView для UITextField.

self.pickerView = [[UIPickerView alloc]initWithFrame:CGRectZero];

self.pickerView.dataSource = self.datasource;
self.pickerView.delegate = self.delegate;

//additional setups

self.textField.inputView = self.pickerView;

Все работает нормально, но когда я активирую голос за кадром и начинаю циклически проходить через itens, голос за кадром начинает делать неверное объявление.

Я провел некоторое исследование и нашел репозиторий на github с кем-то, у кого возникла та же проблема, но я не смог найти никакого решения.

1 Ответ

0 голосов
/ 21 февраля 2020

Я нахожу обходной путь для этого случая. В методе pickerView(_:didSelectRow:inComponent:) я использую UIAccessibilityPostNotification с UIAccessibilityAnnouncementNotification, передавая выбранный элемент, заставляя голос за кадром сделать правильное объявление.

Objective- C:

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
    if(UIAccessibilityIsVoiceOverRunning()){
        UIAccessibilityPostNotification(UIAccessibilityAnnouncementNotification, self.items[row]);
    }
}

Swift:

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    if(UIAccessibility.isVoiceOverRunning){
        UIAccessibility.post(notification: UIAccessibility.Notification.announcement, argument: self.items);
    }
}
...