Xcode - отключить доступность для всех элементов

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

Я пытался сделать это, передавая self.view к следующему методу:

- (void)disableSubviewsOfView:(UIView *)view
{
    NSArray *subviews = [view subviews];
    for (UIView *subview in subviews)
    {
        [subview setIsAccessibilityElement:NO];
        [self disableSubviewsOfView:subview];
    }
}

Следует отметить, что по какой-то причине парень, который изначально написал этот код, решил поместить UIViews поверх друг друга, чтобы в фоновом режиме остались элементы.

Мне интересно, есть ли способ, которым я могу отключить доступ ко всем элементам, не обязательно только те, которые содержатся в конкретном UIView?

1 ответ

Решение

Из вашего комментария кажется, что вы пытаетесь запретить пользователям VoiceOver взаимодействовать с закрытыми представлениями (например, представления, заблокированные модальным представлением). Попробуйте установить accessibilityViewIsModal в YES в вашем самом верхнем представлении, чтобы инструктировать клиентов доступности игнорировать взаимодействие с братьями и сестрами этого элемента.

Вы можете отключить доступность каждого элемента в файлах раскадровки /xib.

UIA доступность в интерфейсе

После в коде вы можете включить нужные вам элементы.

view.IsAccessibilityElement = YES;

Это может вам помочь, но я думаю, что в вашей ситуации верхний ответ лучше.

Другие вопросы по тегам